2013-03-22 54 views
4

我有以下代码:“数据3失败”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>'; 
} 

不管我做什么,它永远只是打印。为什么覆盖与最后一个闪烁,而不是将所有闪烁添加到数组中?

'user' => array(
    'allowAutoLogin' => true, 
    'class' => 'WebUser', 
    'autoUpdateFlash' => false, 
), 

任何想法:

我在我的配置,没有运气尝试这样做?

回答

3

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

以您目前的代码,你覆盖在每次调用setFlash新消息error键的值。

你可以()追加你的消息相同的密钥,而不是覆盖他们:

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从闪存商店得到一个消息。

相关问题