zend框架FlashMessenger问题

时间:2009-07-06 08:53:19

标签: php zend-framework

我正在使用FlashMessenger助手设置消息,但我无法使用getMessages()方法检索消息。它返回null。这是我的示例代码:

<?php
class Admin_TestController extends Zend_Controller_Action
{
    protected $_flashMessenger = null;

    public function init()
    {
        $this->_flashMessenger = $this->_helper->getHelper('FlashMessenger');
        $this->initView();
    }

    public function myAction()
    {
        $this->_flashMessenger->addMessage('test message');

        $this->_helper->Redirector("mynextrequest");
    }

    public function mynextrequestAction()
    {
        zend_debug::dump($this->_flashMessenger->getMessages());
        $this->render();
    }
}

5 个答案:

答案 0 :(得分:3)

要解决此问题,您需要编辑库/ Zend / Controller / Action / Helper / FlashMessenger.php

找到这条线:
 self::$_session->{$this->_namespace}[] = $message;

并将其更改为
//self::$_session->{$this->_namespace}[] = $message;
$sessionMessages = self::$_session->{$this->_namespace};
$sessionMessages[] = $message;
self::$_session->{$this->_namespace} = $sessionMessages;

这个问题只影响php 5.2,所以他们决定不修复它,而是建议升级PHP版本。

答案 1 :(得分:1)

我从php 5.2.0升级到5.2.9,问题解决了。

答案 2 :(得分:0)

除了函数/类名大小写问题之外,请确保您的Zend_Session已设置,启动并具有可用的存储方法。它将使用来自new Zend_Session_Namespace('FlashMessenger')

的会话存储方法

答案 3 :(得分:0)

PHP 5.2.x版本存在问题

  

// Zend_Controller_Action_Helper_FlashMessenger :: addMessage()(第143行)
  self :: $ _ session-&gt; {$ this-&gt; _namespace} [] = $ message;

升级PHP将是一个解决方案(正如您所做)或使用以下代码替换上述行:

  

$ messages = self :: $ _ session-&gt; {$ this-&gt; _namespace};

     

$ messages [] = $ message;

     

self :: $ _ session-&gt; {$ this-&gt; _namespace} = $ messages;

答案 4 :(得分:0)

我遇到的问题来自于使用flashMessenger的两个ajax调用并且正在以随机顺序完成加载。所以第一个ajax调用有时会首先被加载,因此使用消息而第二个没有;我期待第二次ajax调用中的错误消息,并想知道为什么他们只显示大约50%的案例。