Zend框架FlashMessenger问题(zend framework FlashMesseng

2019-09-17 17:30发布

我使用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();
    }
}

Answer 1:

为了解决这个问题,你需要编辑库/的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版本。



Answer 2:

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



Answer 3:

除了功能/类名大小写的问题,请确保您的Zend_Session开启设置,启动,并有一个可行的存储方法。 这将使用来自于你的会话存储方法, new Zend_Session_Namespace('FlashMessenger')



Answer 4:

有PHP 5.2.x版本,即有一个问题

// Zend_Controller_Action_Helper_FlashMessenger ::方法addMessage()(行143)
自:: $ _会话 - > {$这 - > _命名空间} [] = $消息;

升级PHP将是一个溶液(如你所做的那样)或用下面的代码替换上面的行:

$消息=自:: $ _会议 - > {$本 - > _命名空间};

$消息[] = $消息;

自:: $ _会议 - > {$本 - > _命名空间} = $消息;



Answer 5:

我不得不从具有使用以FlashMessenger并分别在随机顺序整理装入两张AJAX调用来了个问题。 因此,第一个AJAX调用有时加载的第一和因此使用该消息以及用于所述第二左无; 而我在第二个Ajax调用预期的错误信息,不知道为什么他们表现出的情况下,仅仅约50%。



文章来源: zend framework FlashMessenger problem