В случае перенаправления флеш-сообщения могут быть повреждены. Я сделал простой тестовый код:Yii2 - вспышка не видна после перенаправления
public function actionTest($test = 0) {
if($test == 0) {
Yii::$app->getSession()->addFlash('success', 'Follow the white rabbit');
return Yii::$app->getResponse()->redirect(array('test', 'test' => 1));
}
return $this->render('test', []);
}
Я вызываю действие без параметра, оно добавляет вспышку и перенаправляет. Когда он отображает страницу - вспышка отсутствует.
Часть просмотра в порядке, потому что, если я устанавливаю флеш и делаю рендер без перенаправления, она отображается правильно.
Почему?
EDIT: Layout код Вид:
<?php
use frontend\widgets\Alert;
$this->beginPage();
echo $this->render('partials/head');
?>
<body class="no-sidebar">
<?= $this->beginBody() ?>
<div id="header">
<?= $this->render('partials/top') ?>
<?= $this->render(Yii::$app->user->isGuest ? 'menus/guest' : 'menus/registered') ?>
</div>
<!-- Main -->
<div id="main">
<?= Alert::widget() ?>
<?= $content ?>
</div>
<?= $this->render('partials/footer') ?>
<?= $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
Это имеет смысл. Если вы используете перенаправление без возврата, сценарий продолжается, он отображает страницу, он использует вспышки, затем перенаправляет. В результате на следующей странице отсутствует пропущенная вспышка. Так что это нормальное и ожидаемое поведение. –
Человек, которого ты спас мой бекон. Я потратил несколько часов, чтобы справиться с этой проблемой, пока не прочитаю ваш комментарий. Исправлена ошибка. Спасибо! –
приятно, спасибо – kiamoz