YII getFlashes()没有删除?

时间:2012-12-05 08:12:39

标签: yii

在开始回答之前,请确保您了解我的情况。

  1. 我有ajax调用,CREATE闪烁。
  2. 我有其他的ajax调用,FETCH闪烁为JSON。
  3. 目前正在发生什么:我点击一个创建闪光灯的按钮。之后我运行一个执行的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后没有被删除?

1 个答案:

答案 0 :(得分:0)

Flash消息由 SESSION 变量控制,Yii在页面加载时会破坏(可能在框架中的某个深处)。您必须在ajax请求开始时手动销毁所有以前的flash消息

您可以使用: getFlashes()来获取所有现有的Flash消息

对于其他Flash消息方法,请查看CWebUser docs here