Php 在Yii2的控制器中同时使用beforeAction()和behaviors()方法

Php 在Yii2的控制器中同时使用beforeAction()和behaviors()方法,php,yii,yii2,yii2-advanced-app,yii2-behaviors,Php,Yii,Yii2,Yii2 Advanced App,Yii2 Behaviors,我想在控制器中同时使用beforeAction()和behaviors()方法 public function beforeAction($action) { if($action->id =='ignore' || $action->id =='accept') { $this->enableCsrfValidation = false; } //return true; return parent::beforeAction($action);

我想在控制器中同时使用
beforeAction()
behaviors()
方法

public function beforeAction($action)
{
  if($action->id =='ignore' || $action->id =='accept')
  {
    $this->enableCsrfValidation = false;
  }
  //return true;
  return parent::beforeAction($action);
}
如果在代码中添加
beforeAction()
方法,则
behaviors()
方法不起作用

如果我删除
beforeAction()
方法,那么
behaviors()
方法就会起作用

我不想删除
beforeAction()
,因为它用于禁用ajax调用的csrf令牌

public function beforeAction($action)
{
  if($action->id =='ignore' || $action->id =='accept')
  {
    $this->enableCsrfValidation = false;
  }
  return true;
}
我想使用
behaviors()
方法进行身份验证

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);
            }
        ],
    ];
}
有没有办法在同一个控制器中使用这两种方法

public function beforeAction($action)
{
  if($action->id =='ignore' || $action->id =='accept')
  {
    $this->enableCsrfValidation = false;
  }
  //return true;
  return parent::beforeAction($action);
}
您需要在操作()之前返回父级