Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拒绝访问控制器后如何在Yii2中设置flash消息_Php_Redirect_Yii2_Flash Message - Fatal编程技术网

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

Php 拒绝访问控制器后如何在Yii2中设置flash消息,php,redirect,yii2,flash-message,Php,Redirect,Yii2,Flash Message,在拒绝访问控制器后,如何在Yii2中设置flash消息? 以下是拒绝访问的方法: 在此之后,它将重定向到站点/登录。我如何在那里生成类似“此部分仅适用于注册用户”的flash消息?能否尝试添加拒绝回调?我希望这能奏效: public function behaviors() { return [ 'access' => [ 'class' => \yii\filters\AccessControl::className(),

在拒绝访问控制器后,如何在Yii2中设置flash消息? 以下是拒绝访问的方法:


在此之后,它将重定向到站点/登录。我如何在那里生成类似“此部分仅适用于注册用户”的flash消息?

能否尝试添加拒绝回调?我希望这能奏效:

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();
            },
        ],
    ];
}

您还可以将denyCallback添加到每个规则:

    [
      'allow' => false,
      'roles' => ['@'],
      'denyCallback' => function($rule, $action) {
         // callback logic
       }
    ]
    [
      'allow' => false,
      'roles' => ['@'],
      'denyCallback' => function($rule, $action) {
         // callback logic
       }
    ]