如何在拒绝访问控制器后在 Yii2 中设置闪现消息

sir*_*jay 3 php redirect flash-message yii2

拒绝访问控制器后如何在 Yii2 中设置闪现消息?以下是拒绝访问http://www.yiiframework.com/doc-2.0/yii-filters-accesscontrol.html的方法:

public function behaviors()
{
    return [
        'access' => [
            'class' => \yii\filters\AccessControl::className(),
            'only' => ['create', 'update'],
            'rules' => [
                // deny all POST requests
                [
                    'allow' => false,
                    'verbs' => ['POST']
                ],
                // allow authenticated users
                [
                    'allow' => true,
                    'roles' => ['@'],
                ],
                // everything else is denied
            ],
        ],
    ];
}
Run Code Online (Sandbox Code Playgroud)

之后它会重定向到站点/登录。我怎样才能在那里制作闪存消息,例如“此部分仅适用于注册用户”?

rob*_*sch 5

您可以尝试添加拒绝回调吗?我希望这有效:

public function behaviors()
{
    return [
        'access' => [
            'class' => \yii\filters\AccessControl::className(),
            'only' => ['create', 'update'],
            'rules' => [
                // deny all POST requests
                [
                    'allow' => false,
                    'verbs' => ['POST']
                ],
                // allow authenticated users
                [
                    'allow' => true,
                    'roles' => ['@'],
                ],
                // everything else is denied
            ],
            'denyCallback'  => function ($rule, $action) {
                Yii::$app->session->setFlash('error', 'This section is only for registered users.');
                Yii::$app->user->loginRequired();
            },
        ],
    ];
}
Run Code Online (Sandbox Code Playgroud)