我在设置Flash消息时遇到问题.所以,我有一个动作,在某些情况下应该重定向闪存.它看起来像这样:
if(!$this->_isSameOrg($reports)){
\Yii::$app->session->setFlash('consol_v_error',\Yii::t('app/consol', 'some_text'));
$this->redirect(\Yii::$app->request->getReferrer());
return;
}
Run Code Online (Sandbox Code Playgroud)
在重定向后,我有这个
<div class="col-lg-12">
<?php if(Yii::$app->session->hasFlash('consol_v_error')): ?>
<div class="alert alert-danger" role="alert">
<?= Yii::$app->session->getFlash('consol_v_error') ?>
</div>
<?php endif; ?>
</div>
Run Code Online (Sandbox Code Playgroud)
问题是我在这里看不到任何消息.在调试面板中,我看到SESSION var填充了良好的闪存,但它不会显示此if语句.也许我需要配置会话组件或什么?...
Den*_*G B 45
要设置闪光灯,请尝试
\Yii::$app->getSession()->setFlash('error', 'Your Text Here..');
return $this->redirect('Your Action');
Run Code Online (Sandbox Code Playgroud)
并显示它..
<?= Yii::$app->session->getFlash('error'); ?>
Run Code Online (Sandbox Code Playgroud)
小智 31
你可以这样试试
<?php
foreach (Yii::$app->session->getAllFlashes() as $key => $message) {
echo '<div class="alert alert-' . $key . '">' . $message . '</div>';
}
?>
Run Code Online (Sandbox Code Playgroud)
小智 14
简单地说:
添加两个字符串: /views/layout/main.php
use:use frontend\widgets\Alert;
Run Code Online (Sandbox Code Playgroud)
<?= $content ?>:<?= Alert::widget() ?>
Run Code Online (Sandbox Code Playgroud)Yii::$app->session->setFlash('warning', 'bla bla bla bla 1');
Yii::$app->session->setFlash('success', 'bla bla 2');
Yii::$app->session->setFlash('error', 'bla bla 3');
Run Code Online (Sandbox Code Playgroud)
小智 9
而不是这个:
$this->redirect(\Yii::$app->request->getReferrer());
return;
Run Code Online (Sandbox Code Playgroud)
试试这个:
return $this->redirect(\Yii::$app->request->getReferrer());
Run Code Online (Sandbox Code Playgroud)
它对我来说很好.