如何更改beforeAction的行为?

时间:2017-09-12 05:04:20

标签: yii2

Controller.php中有一个beforeAction()

public function beforeAction($action)
    {
        if (parent::beforeAction($action)) {
            if ($this->enableCsrfValidation && Yii::$app->getErrorHandler()->exception === null && !Yii::$app->getRequest()->validateCsrfToken()) {
                throw new BadRequestHttpException(Yii::t('yii', 'Unable to verify your data submission.'));
            }
            return true;
        }

        return false;
    }

它抛出一个异常,但我想在我自己的控制器中更改它,扩展了controller.php。我尝试类似的东西

public function beforeAction($action) {
    if ($this->enableCsrfValidation && Yii::$app->getErrorHandler()->exception === null && !Yii::$app->getRequest()->validateCsrfToken()) {
        Yii::$app->session->setFlash('info', 'Error');
        $this->goBack();
    }
    return parent::beforeAction($action);
}

但它仍然显示异常。

1 个答案:

答案 0 :(得分:0)

不确定,但只更改此行可能会有效......

$this->goBack();

...成

return $this->goBack();

另一种方法是从父级捕获异常。稍后可能会有由beforeAction触发的其他事件,如果没有调用parent :: beforeAction,则这些事件可能无法按预期运行。