2015-11-11 1 views
3

Je suis un Yiibie, coincé dans un problème. J'ai installé yii utilisateurs et droits. Il me donne l'erreur chaque fois que j'essaie de courir localhost/webapp/table il donne une erreur qui est "Error 404 The system is unable to find the requested action "list", mais quand j'essaye de courir localhost/webapp/table/index il me montre la vue d'action d'index qui fonctionne très bien. Voici mon config/main.phpYii: pourquoi mon index par défaut du contrôleur ne fonctionne pas?

<?php 

// uncomment the following to define a path alias 
// Yii::setPathOfAlias('local','path/to/local-folder'); 

// This is the main Web application configuration. Any writable 
// CWebApplication properties can be configured here. 

return array(
    'theme' => 'bootstrap', 
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 
    'name'=>'emergency response system', 

    // preloading 'log' component 
    'preload'=>array('log'), 
'aliases' => array(
     'bootstrap' => 'ext.bootstrap'), 
    // autoloading model and component classes 
    'import'=>array(
     'application.models.*', 
     'application.components.*', 
     'bootstrap.behaviors.*', 
       'bootstrap.helpers.*', 
       'bootstrap.widgets.*', 
       'application.modules.user.models.*', 
       'application.modules.user.components.*', 
       'application.modules.rights.*', 
       'application.modules.rights.components.*', 
    ), 

    'modules'=>array(
     // uncomment the following to enable the Gii tool 

     'gii'=>array(
      'class'=>'system.gii.GiiModule', 
      'password'=>'ers', 
        'generatorPaths' => array(
       'bootstrap.gii',), 
      // If removed, Gii defaults to localhost only. Edit carefully to taste. 
      'ipFilters'=>array('127.0.0.1','::1'), 
     ), 
      'user' => array(
      'tableUsers' => 'user', 
      'tableProfiles' => 'profiles', 
      'tableProfileFields' => 'profiles_fields', 
       # encrypting method (php hash function) 
       'hash' => 'md5', 

       # send activation email 
       'sendActivationMail' => true, 

       # allow access for non-activated users 
       'loginNotActiv' => false, 

       # activate user on registration (only sendActivationMail = false) 
       'activeAfterRegister' => false, 

       # automatically login from registration 
       'autoLogin' => true, 

       # registration path 
       'registrationUrl' => array('/user/registration'), 

       # recovery password path 
       'recoveryUrl' => array('/user/recovery'), 

       # login form path 
       'loginUrl' => array('/user/login'), 

       # page after login 
       'returnUrl' => array('/user/profile'), 

       # page after logout 
       'returnLogoutUrl' => array('/user/login'), 


    ), 
      'rights'=>array(
      'install'=>true, 
       'superuserName'=>'Admin', // Name of the role with super user privileges. 
       'authenticatedName'=>'Authenticated', // Name of the authenticated user role. 
       'userIdColumn'=>'id', // Name of the user id column in the database. 
       'userNameColumn'=>'username', // Name of the user name column in the database. 
       'enableBizRule'=>true, // Whether to enable authorization item business rules. 
       'enableBizRuleData'=>true, // Whether to enable data for business rules. 
       'displayDescription'=>true, // Whether to use item description instead of name. 
       'flashSuccessKey'=>'RightsSuccess', // Key to use for setting success flash messages. 
       'flashErrorKey'=>'RightsError', // Key to use for setting error flash messages. 
       'baseUrl'=>'/rights', // Base URL for Rights. Change if module is nested. 
       'layout'=>'rights.views.layouts.main', // Layout to use for displaying Rights. 
       'appLayout'=>'application.views.layouts.main', // Application layout. 
       'cssFile'=>'rights.css', // Style sheet file to use for Rights. 
       'install'=>false, // Whether to enable installer. 
       'debug'=>false, 
     ), 
      ), 

    // application components 
    'components'=>array(

     'user'=>array(
        'class'=>'RWebUser', 
      // enable cookie-based authentication 
      'allowAutoLogin'=>true, 
        'loginUrl'=>array('/user/login'), 
     ), 
      'authManager'=>array(
       'class'=>'RDbAuthManager', 
       'connectionID'=>'db', 
       'defaultRoles'=>array('Authenticated', 'Guest'), 

       'itemTable'=>'authitem', 
       'itemChildTable'=>'authitemchild', 
       'assignmentTable'=>'authassignment', 
       'rightsTable'=>'rights', 
     ), 


     'bootstrap' => array(
      'class' => 'bootstrap.components.BsApi',), 

     // uncomment the following to enable URLs in path-format 

     'urlManager'=>array(
      'urlFormat'=>'path', 
        'showScriptName'=>false, 
      'rules'=>array(
       '<controller:\w+>'=>'<controller>/list', 
       '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
       '<controller:\w+>/<id:\d+>/<title>'=>'<controller>/view', 
       '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
      ), 
     ), 


     // database settings are configured in database.php 
//  'db'=>require(dirname(__FILE__).'/database.php'), 

     'db'=>array(
      'connectionString' => 'mysql:host=localhost;dbname=response_system', 
      'emulatePrepare' => true, 
      'username' => 'root', 
      'password' => '', 
      'charset' => 'utf8', 
     ), 

     'errorHandler'=>array(
      // use 'site/error' action to display errors 
      'errorAction'=>'site/error', 
     ), 

     'log'=>array(
      'class'=>'CLogRouter', 
      'routes'=>array(
       array(
        'class'=>'CFileLogRoute', 
        'levels'=>'error, warning', 
       ), 
       // uncomment the following to show log messages on web pages 

       array(
        'class'=>'CWebLogRoute', 
       ), 

      ), 
     ), 

    ), 

    // application-level parameters that can be accessed 
    // using Yii::app()->params['paramName'] 
    'params'=>array(
     // this is used in contact page 
     'adminEmail'=>'[email protected]', 
    ), 

); 

et voici mon fichier modèle

<?php 

/** 
* This is the model class for table "story". 
* 
* The followings are the available columns in table 'story': 
* @property integer $id 
* @property string $title 
* @property string $story 
* 
* The followings are the available model relations: 
* @property UserWriteStory[] $userWriteStories 
*/ 
class Story extends CActiveRecord 
{ 
    /** 
    * Returns the static model of the specified AR class. 
    * @param string $className active record class name. 
    * @return Story the static model class 
    */ 
    public static function model($className=__CLASS__) 
    { 
     return parent::model($className); 
    } 

    /** 
    * @return string the associated database table name 
    */ 
    public function tableName() 
    { 
     return 'story'; 
    } 

    /** 
    * @return array validation rules for model attributes. 
    */ 
    public function rules() 
    { 
     // NOTE: you should only define rules for those attributes that 
     // will receive user inputs. 
     return array(
      array('title, story', 'required'), 
      array('title', 'length', 'max'=>100), 
      array('story', 'length', 'max'=>1000), 
      // The following rule is used by search(). 
      // Please remove those attributes that should not be searched. 
      array('id, title, story', 'safe', 'on'=>'search'), 
     ); 
    } 

    /** 
    * @return array relational rules. 
    */ 
    public function relations() 
    { 
     // NOTE: you may need to adjust the relation name and the related 
     // class name for the relations automatically generated below. 
     return array(
      'userWriteStories' => array(self::HAS_MANY, 'UserWriteStory', 'story_story_id'), 
     ); 
    } 

    /** 
    * @return array customized attribute labels (name=>label) 
    */ 
    public function attributeLabels() 
    { 
     return array(
      'id' => 'ID', 
      'title' => 'Title', 
      'story' => 'Story', 
     ); 
    } 

    /** 
    * Retrieves a list of models based on the current search/filter conditions. 
    * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. 
    */ 
    public function search() 
    { 
     // Warning: Please modify the following code to remove attributes that 
     // should not be searched. 

     $criteria=new CDbCriteria; 

     $criteria->compare('id',$this->id); 
     $criteria->compare('title',$this->title,true); 
     $criteria->compare('story',$this->story,true); 

     return new CActiveDataProvider($this, array(
      'criteria'=>$criteria, 
     )); 
    } 
} 

ce qui est mon contrôleur connexe.

<?php 

class StoryController extends RController 
{ 
    /** 
    * @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/admin'; 

    /** 
    * @return array action filters 
    */ 
    public function filters() 
    { 
     return array(
//   'accessControl', // perform access control for CRUD operations 
//   'postOnly + delete', // we only allow deletion via POST request 
        'rights', 
     ); 
    } 

    /** 
    * 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 Story; 

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

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

     $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['Story'])) 
     { 
      $model->attributes=$_POST['Story']; 
      if($model->save()) 
       $this->redirect(array('view','id'=>$model->id)); 
     } 

     $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('Story'); 
     $this->render('index',array(
      'dataProvider'=>$dataProvider, 
     )); 
    } 

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

     $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 $id the ID of the model to be loaded 
    * @return Story the loaded model 
    * @throws CHttpException 
    */ 
    public function loadModel($id) 
    { 
     $model=Story::model()->findByPk($id); 
     if($model===null) 
      throw new CHttpException(404,'The requested page does not exist.'); 
     return $model; 
    } 

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

S'il vous plaît montrer votre contrôleur lié – scaisEdge

+0

@scaisEdge j'ai collé le contrôleur associé. –

+0

@scaisEdge J'ai mis à jour avec le contrôleur associé. –

Répondre

-1

Dans votre main.php du fichier de configuration, commentez cette ligne:

<controller:\w+>'=>'<controller>/list 
+0

Comment cette réponse a-t-elle été acceptée si le code n'était pas visible? Je l'ai édité pour que les balises XML soient maintenant visibles. – halfer

1

dans votre config/main.php dans votre ruoting/réécrire les règles que vous avez affecté comme action par défaut = list mais actionList n'est pas présent dans votreController. Ensuite, lorsque l'action non sont dans l'URL setted Yii au lieu de list.php appeler index.php (erreur 404)

Vous le changement Nedd ce

   '<controller:\w+>'=>'<controller>/list', 

changen ce de cette manière

   '<controller:\w+>'=>'<controller>/index', 

ou Comme suggéré par @Usman Daby Khan vous pouvez le supprimer, de cette façon, le comportement par défaut de Yii2 revenir au travail.

0

Dans urlManager -> Les règles vous pouvez supprimer cette ligne

'<controller:\w+>'=>'<controller>/list', 

et définir la propriété defaultAction du contrôleur:

class StoryController extends RController 
{ 
     public $defaultAction = 'list'; 
+0

Je pense que la question veut restaurer l'index ne pas créer la liste ..... – scaisEdge