我使用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();
}
}
为了解决这个问题,你需要编辑库/的Zend /控制器/动作/助手/ 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版本。
我从PHP 5.2.0升级到5.2.9,问题解决了。
除了功能/类名大小写的问题,请确保您的Zend_Session开启设置,启动,并有一个可行的存储方法。 这将使用来自于你的会话存储方法, new Zend_Session_Namespace('FlashMessenger')
有PHP 5.2.x版本,即有一个问题
// Zend_Controller_Action_Helper_FlashMessenger ::方法addMessage()(行143)
自:: $ _会话 - > {$这 - > _命名空间} [] = $消息;
升级PHP将是一个溶液(如你所做的那样)或用下面的代码替换上面的行:
$消息=自:: $ _会议 - > {$本 - > _命名空间};
$消息[] = $消息;
自:: $ _会议 - > {$本 - > _命名空间} = $消息;
我不得不从具有使用以FlashMessenger并分别在随机顺序整理装入两张AJAX调用来了个问题。 因此,第一个AJAX调用有时加载的第一和因此使用该消息以及用于所述第二左无; 而我在第二个Ajax调用预期的错误信息,不知道为什么他们表现出的情况下,仅仅约50%。