Lucrul la cjuiautocomplete Afișarea excepției

Am încercat codul de la sursa te de

Codul sursă utilizat pentru CJUIAutoComplete

nu ajunge unde este greșeala afișarea erorii ca neautorizată te rog ajută-mă eu sunt nou în cadrul Yii și pentru Debugging, de asemenea.

Aici merge My Log Error

2012/05/25 06:07:28 [error] [exception.CHttpException.403] exception 'CHttpException' with message 'You are not authorized to perform this action.' in C:\wamp\yii\framework\web\auth\CAccessControlFilter.php:157 

Stack trace:
#0 C:\wamp\yii\framework\web\auth\CAccessControlFilter.php(120) CAccessControlFilter->accessDenied(Object(CWebUser), 'You are not aut...')
#1 C:\wamp\yii\framework\web\filters\CFilter.php(39) CAccessControlFilter->preFilter(Object(CFilterChain))

#2 C:\wamp\yii\framework\web\CController.php(1146): CFilter->filter(Object(CFilterChain))
#3 C:\wamp\yii\framework\web\filters\CInlineFilter.php(59) CController->filterAccessControl(Object(CFilterChain))


#4 C:\wamp\yii\framework\web\filters\CFilterChain.php(131) CInlineFilter->filter(Object(CFilterChain))

#5 C:\wamp\yii\framework\web\CController.php(292): CFilterChain->run()

#6 C:\wamp\yii\framework\web\CController.php(266): CController->runActionWithFilters(Object(CInlineAction), Array)

#7 C:\wamp\yii\framework\web\CWebApplication.php(276): CController->run('autocompleteTes...')

#8 C:\wamp\yii\framework\web\CWebApplication.php(135): CWebApplication->runController('details/autocom...')

#9 C:\wamp\yii\framework\base\CApplication.php(162): CWebApplication->processRequest()

#10 C:\wamp\www\myapp\index.php(13): CApplication->run()

#11 {main}
REQUEST_URI=/myapp/index.php?r=details/autocompleteTest&term=asss
HTTP_REFERER=http://localhost/myapp/index.php?r=details/create

Codul de control este

<?php
class DetailsController extends Controller
{
/**
 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
 * using two-column layout. See 'protected/views/layouts/column2.php'.
 */
public $layout='//layouts/column2';

/**
 * @return array action filters
 */
public function filters()
{
    return array(
        'accessControl',//perform access control for CRUD operations
    );
}

    public function actionAutocompleteTest() {
$res =array();

if (isset($_GET['term'])) {
    $qtxt ="SELECT name FROM {{details}} WHERE name LIKE :username";
    $command =Yii::app()->db->createCommand($qtxt);
    $command->bindValue(":name", '%'.$_GET['term'].'%', PDO::PARAM_STR);
    $res =$command->queryColumn();
}

echo CJSON::encode($res);
Yii::app()->end();
}


/**
 * Specifies the access control rules.
 * This method is used by the 'accessControl' filter.
 * @return array access control rules
 */
public function accessRules()
{
    return array(
        array('allow', //allow all users to perform 'index' and 'view' actions
            'actions'=>array('index','view'),
            'users'=>array('*'),
        ),
        array('allow',//allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),
        array('allow',//allow admin user to perform 'admin' and 'delete' actions
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny', //deny all users
            'users'=>array('*'),
        ),
    );
}

/**
 * Displays a particular model.
 * @param integer $id the ID of the model to be displayed
 */
public function actionView($id)
{
    $this->render('view',array(
        'model'=>$this->loadModel($id),
    ));
}

/**
 * Creates a new model.
 * If creation is successful, the browser will be redirected to the 'view' page.
 */
public function actionCreate()
{
    $model=new Details;

   //Uncomment the following line if AJAX validation is needed
   //$this->performAjaxValidation($model);

    if(isset($_POST['Details']))
    {
        $model->attributes=$_POST['Details'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id1));
    }

    $this->render('create',array(
        'model'=>$model,
    ));
}

/**
 * Updates a particular model.
 * If update is successful, the browser will be redirected to the 'view' page.
 * @param integer $id the ID of the model to be updated
 */
public function actionUpdate($id)
{
    $model=$this->loadModel($id);

   //Uncomment the following line if AJAX validation is needed
   //$this->performAjaxValidation($model);

    if(isset($_POST['Details']))
    {
        $model->attributes=$_POST['Details'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id1));
    }

    $this->render('update',array(
        'model'=>$model,
    ));
}

/**
 * Deletes a particular model.
 * If deletion is successful, the browser will be redirected to the 'admin' page.
 * @param integer $id the ID of the model to be deleted
 */
public function actionDelete($id)
{
    if(Yii::app()->request->isPostRequest)
    {
       //we only allow deletion via POST request
        $this->loadModel($id)->delete();

       //if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
        if(!isset($_GET['ajax']))
            $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
    }
    else
        throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}

/**
 * Lists all models.
 */
public function actionIndex()
{
    $dataProvider=new CActiveDataProvider('Details');
    $this->render('index',array(
        'dataProvider'=>$dataProvider,
    ));
}

/**
 * Manages all models.
 */
public function actionAdmin()
{
    $model=new Details('search');
    $model->unsetAttributes(); //clear any default values
    if(isset($_GET['Details']))
        $model->attributes=$_GET['Details'];

    $this->render('admin',array(
        'model'=>$model,
    ));
}

/**
 * Returns the data model based on the primary key given in the GET variable.
 * If the data model is not found, an HTTP exception will be raised.
 * @param integer the ID of the model to be loaded
 */
public function loadModel($id)
{
    $model=Details::model()->findByPk($id);
    if($model===null)
        throw new CHttpException(404,'The requested page does not exist.');
    return $model;
}



/**
 * Performs the AJAX validation.
 * @param CModel the model to be validated
 */
protected function performAjaxValidation($model)
{
    if(isset($_POST['ajax']) && $_POST['ajax']==='details-form')
    {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }
}
}

Cod formular

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'details-form',
    'enableAjaxValidation'=>false,
)); ?>

    
Fields with * are required.

<?php echo $form->errorSummary($model); ?> <div class="row"> <?php echo $form->labelEx($model,'id'); ?> <?php echo $form->textField($model,'id'); ?> <?php echo $form->error($model,'id'); ?> </div> <div class="row"> <?php echo $form->labelEx($model,'name'); ?> <?php $this->widget('zii.widgets.jui.CJuiAutoComplete', array( 'name'=>'test1', 'value'=>'test21', 'source'=>$this->createUrl('details/autocompleteTest'), //additional JavaScript options for the autocomplete plugin 'options'=>array( 'showAnim'=>'fold', ), )); ?> <?php echo $form->error($model,'name'); ?> </div> <div class="row"> <?php echo $form->labelEx($model,'phone'); ?> <?php echo $form->textField($model,'phone'); ?> <?php echo $form->error($model,'phone'); ?> </div> <div class="row"> <?php echo $form->labelEx($model,'email'); ?> <?php echo $form->textField($model,'email'); ?> <?php echo $form->error($model,'email'); ?> </div> <div class="row buttons"> <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?> </div> <?php $this->endWidget(); ?> </div><!-- form -->

Mulțumiri Devendar

0

3 răspunsuri

Trebuie să vă actualizați detaliul de control:

array('allow', 
     //allow authenticated user to perform 'create', 'update' and 'autocompleteTest' actions
      'actions'=>array('create','update', 'autocompleteTest'),
      'users'=>array('@'),
),
1
adăugat
@Segey Multumesc pentru raspuns - dar inca prezinta aceeasi eroare Log
adăugat autor Devendar, sursa
am adăugat în accessrules - dar, de asemenea, același mesaj în jurnal de eroare
adăugat autor Devendar, sursa
am adăugat codul de mai sus în funcția DetailConstroller under actionAutocompleteTest() - este corect?
adăugat autor Devendar, sursa

Controlor Cod:

numele este atributul modelului (tabelul bazei de date)

public function actionAutoCompleteLookup() {
    $res =array();

    if (isset($_GET['term'])) {

        $qtxt ="SELECT name FROM customer WHERE name LIKE :name";
        $command =Yii::app()->db->createCommand($qtxt);
        $command->bindValue(":name", '%'.$_GET['term'].'%', PDO::PARAM_STR);
        $res =$command->queryColumn();
    }

    echo CJSON::encode($res);
    Yii::app()->end();
}

Afișați codul

Creare URL - Nume/Actin Controller (Numele funcției u scris în Controller)

        <?php $this->widget('zii.widgets.jui.CJuiAutoComplete', array(
    'name'=>'test2',
    'source'=>$this->createUrl('Customer/AutoCompleteLookup'),

             'options'=>array(
             'showAnim'=>'fold',
              ), 
));
    ?>

Vă mulțumim pentru Stackoverflow

0
adăugat

Încercați acest lucru foarte simplu pentru dvs. ..

public function actionAutoCompleteLookup()
        {
           if(Yii::app()->request->isAjaxRequest && isset($_GET['q']))
           {

              $name = $_GET['q']; 

               $qtxt ="SELECT name FROM details WHERE name LIKE '%".$name."%'";
               $command =Yii::app()->db->createCommand($qtxt);

               $userArray =$command->queryColumn();

              $returnVal = '';
              foreach($userArray as $userAccount)
              {
                 $returnVal .= $userAccount->getAttribute('first_name').'|'
                                             .$userAccount->getAttribute('user_id')."\n";
              }
              echo $returnVal;
           }
        }

Și în codul de vedere ca asta ..

<?php $this->widget('CAutoComplete',
          array(
                         //name of the html field that will be generated
             'name'=>'name', 
                       //replace controller/action with real ids
             'url'=>array('detail/AutoCompleteLookup'), 
             'max'=>10, //specifies the max number of items to display

                         //specifies the number of chars that must be entered 
                         //before autocomplete initiates a lookup

             ));
    ?>

munca sa fină ...

0
adăugat
# 3 C: \ wamp \ yii \ framework \ web \ filters \ CilinFilter.php (59): CController-> filterAccessControl (Obiect (CFilterChain) (131): CInlineFilter-> filter (Object (CFilterChain)) # 5 C: \ wamp \ yii \ framework \ web \ CController.php (292): CFilterChain-> run \ web \ CController.php (266): CController-> runActionWithFilters (Obiect (CInlineAction), Array) # 7 C: \ wamp \ yii \ framework \ web CWebApplication.php (276): CController-> run ('AutoCompleteLoo. .. ')
adăugat autor Devendar, sursa
Mulțumesc pentru ajutorul dvs. tip - în cele din urmă am luat-o
adăugat autor Devendar, sursa
dați-mi ur id - voi trimite codul total
adăugat autor Devendar, sursa
este acest ur în fb: owais.iqbal.357
adăugat autor Devendar, sursa
vă rugăm să vă conectați la sistemul meu o dată sau altceva pot trimite codul total de aplicație
adăugat autor Devendar, sursa
teamviewr - dă-mi ur personal id sau altceva id-ul meu este - devendar.gona la gmail.com
adăugat autor Devendar, sursa
Prieten dacă nu e gratuit - încercați să vă conectați la sistemul meu o dată - i-am lovit aici de la 2 zile
adăugat autor Devendar, sursa
apoi, de asemenea, același prieten de eroare
adăugat autor Devendar, sursa
# 9 C: \ wamp \ yii \ framework \ web \ CWebApplication.php (135): CWebApplication-> runController ('Detalii/AutoCom ...') (): CWebApplication-> processRequest() # 10 C: \ wamp \ www \ myapp \ index.php (13): CAplicație-> Detalii/AutoCompleteLookup & q = & zwnj; de & limit = 10 & timestam & zwnj; p = 1337932062468 HTTP_REFERER = localhost/myapp /index.php?r=details/create
adăugat autor Devendar, sursa
2012/05/25 07:47:42 [error] [exception.CHttpException.403] excepție "CHttpException" cu mesajul "Nu sunteți autorizat să efectuați această acțiune". în C: \ wamp \ Yii \ cadru \ web \ auth \ CAccessControlFilter.php: 157 stiva urme: # 0 C: \ wamp \ Yii \ cadru \ web \ auth \ CAccessControlFilter.php (120) & zwnj;: CAccessControlFilter-> accessDenied (Object (CWebUser), 'nu sunt mot ...') # 1 C: \ wamp \ Yii \ cadru \ web \ filtre \ CFilter.php (39): CAccessControlFilter-> prefiltru (Object (CFilterChain)) # 2 C: \ wamp \ yii \ framework \ web \ CController.php (1146): CFilter-> filtru (obiect
adăugat autor Devendar, sursa
folosesc numele Db - detalii - numele controlerului este DetailsController.php și codul de vizualizare adăugat în fișierul _form.php. db tabelul Atributele sunt id1, id, nume, telefon, e-mail.
adăugat autor Devendar, sursa
da prieten același am scris
adăugat autor Devendar, sursa
dacă am schimbat (controlername/action) - nu este autorizat
adăugat autor Devendar, sursa
# 3 {main} REQUEST_URI =/myapp/index.php? R = admin/AutoCompleteLookup & q = de & zwnj; & limit = 10 & timestamp = & zwnj; 1337928948219 http: //localhost/myapp/index.php? r = detalii/creați "rel =" nofollow noreferrer "> localhost/myapp/index.php? r = detalii/creați
adăugat autor Devendar, sursa
am copiat așa cum este - arătând această eroare în eroare log 2012/05/25 06:55:48 [error] [exception.CHttpException.404] excepție "CHttpException" cu mesajul "Nu se poate rezolva cererea" admin/AutoCompleteLookup ". ' în C: \ wamp \ yii \ framework \ web \ CWebApplication.php: 280 Trasarea stivei: # 0 C: \ Wamp \ yii \ framework \ web \ CWebApplication.php (135): CWebApplication-> runController (' ..) # 1 C: \ wamp \ ypi \ www \ myapp \ index.php (13): CApplication.php (162): CWebApplication-> processRequest > run ()
adăugat autor Devendar, sursa
astfel încât ceea ce veți obține eroarea acum..copy eroare
adăugat autor Owais Iqbal, sursa
IN vedere ... utilizați acest widget în afara formularului .. și apoi verificați ...
adăugat autor Owais Iqbal, sursa
ați scris astfel .. "url" => array (Detalii/AutoCompleteLookup),
adăugat autor Owais Iqbal, sursa
Cum pot să mă loghez la sistemul tău liber?
adăugat autor Owais Iqbal, sursa
în vedere dă da Url greșit ... corecta Urlul ca 'url' => array ('Controller name/AutoCompleteLookup');
adăugat autor Owais Iqbal, sursa
Îmi pare rău freind .. Am verificat codul meu .. funcționează în mod corespunzător .. deci cred că aveți o problemă în fișierul dvs. de configurare sau unele unde altundeva ..
adăugat autor Owais Iqbal, sursa
lol nu este id-ul meu :)
adăugat autor Owais Iqbal, sursa
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT