2017-06-22 2 views
0

Je souhaite utiliser les deux méthodes beforeAction() et behaviors() dans mon contrôleur.utiliser la méthode beforeAction() et behaviors() dans le contrôleur dans Yii2

Si j'ajoute la méthode beforeAction() dans mon code que la méthode behaviors() ne fonctionne pas.

Et si j'enlève la méthode beforeAction() que la méthode behaviors() fonctionne.

Je ne veux pas supprimer beforeAction() car il est utilisé pour désactiver le jeton csrf pour les appels ajax.

public function beforeAction($action) 
{ 
    if($action->id =='ignore' || $action->id =='accept') 
    { 
    $this->enableCsrfValidation = false; 
    } 
    return true; 
} 

et je veux utiliser la méthode behaviors() pour l'authentification.

public function behaviors() 
{ 
    return [ 
     'access' => [ 
      'class' => AccessControl::className(), 
      'only' => ['create','index','update','change','view','page','active','list'], 
      'rules' => [ 
       [ 
        'actions' => ['create','index','update','change','view','page','active','list'], 
        'allow' => true, 
        'roles' => ['@'], 
        'matchCallback' => function ($rule, $action) 
        { 
         echo "string"; 
         die; 
        }, 
       ], 
      ], 
      'denyCallback' => function ($rule, $action) { 
       return $this->redirect(Yii::$app->request->baseUrl); 
      } 
     ], 
    ]; 
} 

Est-il possible d'utiliser les deux méthodes dans le même contrôleur.

Répondre

5
public function beforeAction($action) 
{ 
    if($action->id =='ignore' || $action->id =='accept') 
    { 
    $this->enableCsrfValidation = false; 
    } 
    //return true; 
    return parent::beforeAction($action); 
} 

vous devez retourner le beforeAction parent()