在开始回答之前,请确保您了解我的情况。
目前正在发生什么:我点击一个创建闪光灯的按钮。之后我运行一个执行的ajax调用:
public function actionGetAllFlashesAsJSON() {
$flashMessages = Yii::app()->user->getFlashes(true);
$returnResult = array();
foreach ($flashMessages as $key => $value) {
$newItem = array();
$newItem['message'] = $value;
$newItem['kind'] = $key;
$returnResult[]= $newItem;
}
print json_encode($returnResult);
die();
}
我的问题是,当我连续两次执行此功能时,它仍然保持返回闪烁。但是,如果我刷新网站,它会显示错误,然后如果我再次按下刷新,它就会消失。我的理论是页面刷新导致了一些其他类型的消息删除...但是什么?在上面的代码中收到消息后,如何强制删除这些消息?
更多背景信息:我使用闪烁作为错误消息,但我希望它们出现在我的网站顶部,因为它们已创建。闪存可能是通过Ajax创建的,所以我运行javascript来检查新消息并显示它们,但我的问题是它多次显示消息,因为它们在调用getFlashes后没有被删除?
答案 0 :(得分:0)
Flash消息由 SESSION 变量控制,Yii在页面加载时会破坏(可能在框架中的某个深处)。您必须在ajax请求开始时手动销毁所有以前的flash消息
您可以使用: getFlashes()来获取所有现有的Flash消息
对于其他Flash消息方法,请查看CWebUser docs here