我正在使用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();
}
}
答案 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%的案例。