2013-03-22 61 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從閃存商店得到一個消息。

相關問題