2015-02-08 64 views
3

如何在拒絕訪問控制器後在Yii2中設置Flash消息? 下面是如何拒絕訪問http://www.yiiframework.com/doc-2.0/yii-filters-accesscontrol.html如何在拒絕訪問控制器後在Yii2中設置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 
      ], 
     ], 
    ]; 
} 

在此之後將其重定向到網站/登錄。我怎樣才能使Flash消息像「這部分只適用於註冊用戶」?

回答

4

你可以嘗試添加拒絕回調嗎?我希望這個作品:

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

你也可以添加denyCallback每個規則:

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