2009-07-06 7 views
2

私はFlashMessengerヘルパーを使用してメッセージを設定していますが、getMessages()メソッドを使用してメッセージを取得できません。 nullを返します。ここに私のサンプルコードは次のとおりです。zend framework 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"と小さな帽子は問題ありませんか? :) –

答えて

1

私はPHP 5.2.0から5.2.9にアップグレードし、問題は解決しました。

0

、あなたにZend_Sessionが設定されていることを確認し、開始、および作品保管方法があります。 new Zend_Session_Namespace('FlashMessenger')

0

// Zend_Controller_Action_Helper_FlashMessenger ::そしてaddMessage()(ライン143)
自己:: $ _セッションに問題が持っているPHP 5.2.xではバージョン、あります - > {$この - > _名前空間は} [] = $ message;

(あなたが行ったように)PHPが解決策になるのアップグレードまたは次のコードで上記の行を置き換える:

$メッセージ=自己:: $ _セッション - > {$この - > _名前空間} ;

$ messages [] = $ message;

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

0

私はflashMessengerを使用してランダム順序でロードを終えた2つのAJAX呼び出しを持っていることから来て問題を抱えていました。最初のAjax呼び出しが最初に読み込まれ、メッセージを使用し、2番目の呼び出しには何も残されませんでした。 2番目のajax呼び出しでエラーメッセージが表示されるのを待っていて、なぜそれらが約50%のケースしか表示していないのか疑問に思っていました。この問題を
 self::$_session->{$this->_namespace}[] = $message;


//self::$_session->{$this->_namespace}[] = $message;
$sessionMessages = self::$_session->{$this->_namespace};
$sessionMessages[] = $message;
self::$_session->{$this->_namespace} = $sessionMessages;

のように変更します。あなたが行を見つけライブラリ/ Zendの/コントローラ/アクション/ヘルパー/ FlashMessenger.php

を編集する必要があり、この問題を解決するには

3

PHP 5.2にのみ影響するため、修正しないことに決め、代わりにPHPバージョンのアップグレードを提案します。

関連する問題