2009-07-06 108 views
2

我正在使用FlashMessenger帮助程序来设置消息,但我无法使用getMessages()方法检索消息。它返回null。这里是我的示例代码:zend框架FlashMessenger问题

<?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

我猜“小型大写”zend_debug“不是问题,还是它? :) – 2009-07-09 11:08:00

回答

1

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

0

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

0

有PHP 5.2.x版本,即有

// Zend_Controller_Action_Helper_FlashMessenger ::方法addMessage()(行143)
自:: $ _会话的问题 - > {$本 - > _命名空间} [] = $ message;

升级PHP将是一个解决方案(像你一样),或者用下面的代码替换上述行:

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

$ messages [] = $ message;

self :: $ _ session - > {$ this - > _ namespace} = $ messages;

0

我必须从具有2 AJAX调用所使用以FlashMessenger和随机顺序完成加载进来的问题。所以第一个ajax调用有时会先加载,然后使用这些消息,而第二个则没有。我期待第二次Ajax调用中的错误消息,并想知道他们为什么只显示约50%的情况。

3

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