YII 只存储最后一个 flash?

标签 yii

我有以下代码:

Yii::app()->user->setFlash('error', "Data1 failed!");
Yii::app()->user->setFlash('error', "Data2 failed!");
Yii::app()->user->setFlash('error', "Data3 failed!");

$flashes = Yii::app()->user->getFlashes();
if (sizeof($flashes) > 0 ) {
  print '<div id="flashes" style="margin: 5px; ">';
  foreach($flashes as $key => $message) {
    print '<div class="flash-' . $key . '">' . $message . "</div>\n";
  }
  print '</div>';
}

无论我做什么,它总是只打印“Data3 failed!”。为什么它用最后一个覆盖闪存,而不是将所有闪存添加到一个数组中?

我在我的配置中尝试过这个,但没有运气:
'user' => array(
  'allowAutoLogin' => true,
  'class' => 'WebUser',
  'autoUpdateFlash' => false, 
),

有任何想法吗?

最佳答案

这是预期的行为。 Yii flash 消息是一个键值存储,这意味着为每个键(比如错误)存储一个值(消息)。

使用您当前的代码,您是 覆盖 error 的值每次调用 setFlash 时都会显示一条新消息。 .

您可以(伪)将您的消息附加到同一个键,而不是覆盖它们:

Yii::app()->user->setFlash('error', "Data1 failed!");
Yii::app()->user->setFlash('error',
    Yii::app()->user->getFlash('error', '')." Data2 failed!");
Yii::app()->user->setFlash('error',
    Yii::app()->user->getFlash('error', '')." Data3 failed!");

从上面可以看出, getFlash 从闪存存储中获取一条消息。

关于YII 只存储最后一个 flash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15560672/

相关文章:

javascript - 关于分页的 Yii CGridView javascript 事件

php - 使用 PHP 通知 undefined variable

php - 在共享服务器上设置 Yii

phpwebsockets yii 实现

yii - 如何在 Yii 中使用 CDbCriteria 按多个参数分组?

forms - 如何在 Yii 表单标签中添加一个类?

php - Yii2 表单中的附加按钮提交表单而不是调用其操作

php - 没有 css/js 的 Gii

php - 帮助在 Yii 中显示图片库

php - yii2 - RBAC - 后端和前端之间共享吗?