2009-07-06 141 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版本。