2015-02-08 6 views
3

Как установить флеш-сообщение в Yii2 после отказа в доступе к контроллеру? Вот как запретить доступ http://www.yiiframework.com/doc-2.0/yii-filters-accesscontrol.html:Как установить флэш-сообщение в Yii2 после отказа в доступе к контроллеру

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

после этого он перенаправляет на сайт/входа в систему. как я могу сделать флеш-сообщение там вроде «Этот раздел предназначен только для зарегистрированных пользователей»?

ответ

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 
     } 
    ]