Как установить флеш-сообщение в 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
],
],
];
}

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

3

Решение

Не могли бы вы попробовать добавить обратный вызов для отказа? Я надеюсь, что это работает:

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

Другие решения

Также вы можете добавить denyCallback к каждому правилу:

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

По вопросам рекламы [email protected]