yii2 setFlash не работает вместе с редиректом. Не выполнять действие контроллера и сделать редирект -- средствами beforeAction()
Primary tabs
setFlash() может "не работать" для конечной странице (на, той куда должен был попасть пользователь ), если на странице, где вызывался ридирект ваш метод всё-таки выполняется -- а значит сообщение как бы уже выставлялось для этого метода.
Возможное решение
Если вы используете beforeAction(), то отдельно делайте редирект и отдельно явно возвращайте false, в случае если метод перед которым делается проверка выполнять не нужно:
public function beforeAction($action) { if (!parent::beforeAction($action)) { // если нужно учитываем родительский контроллер тут или выше return false; } $result = shouldContinue(); // bool if (!$result) { // если действие выполнять не нужно Yii::$app->session->setFlash('error', $errorMessage); $this->redirect(['/']); } return $result; }
Идея того, что иначе действие будет всё равно выполнено и это "съест" уведомление, предназначенное уже для другой страницы, взята отсюда: https://github.com/yiisoft/yii2/issues/9...
- Log in to post comments
- 5195 reads