2010-07-26 52 views

回答

1

它的工作原理與它應該完全相同,這是FlashMessenger helper的預期行爲。

FlashMessenger所做的是存儲您在會話中添加的消息。它僅在構建新的FlashMessenger對象時從會話加載它們;那就是當下一個請求發生時。這是FlashMessenger的重點;將消息從一個請求傳遞到另一個請求;不要在同一個請求中傳遞消息(爲此,您只需使用常規變量或諸如Zend_Registry的存儲)。

您通常對FlashMessenger所做的事情是,您首先添加一條消息,然後使用例如,重定向到同一個(或另一個)頁面。 _redirect方法或重定向器操作助手。對Zend_Controller類進行子類化並添加自己的幫助器方法非常方便,您可以使用單一方法執行這兩種方法,例如稱爲_flash的方法。比如我平時做這樣的事情:

<?php 

class App_Controller extends Zend_Controller_Action 
{ 
    protected $_messages = array(); 

    protected function _flash($message, $to = false) 
    { 
     $flashMessenger = $this->_helper->getHelper('FlashMessenger'); 
     if ($message) 
      $flashMessenger->addMessage($message); 
     if (!$to) 
      $to = $this->_request->getRequestUri(); 
     $this->_redirect($to); 
    } 

    public function postDispatch() 
    { 
     // Set flash messages 
     $flashMessenger = $this->_helper->getHelper('FlashMessenger'); 
     $this->view->messages = array_merge($this->_messages, $flashMessenger->getMessages()); 
    } 
} 

然後我簡單地做$this->_flash("My message");這將做兩件事情:1)添加消息閃光燈消息棧和2)刷新頁面。

你也可以看到我有一個protected $_messages,原因是如果我想顯示一條消息而不必刷新頁面,我可以簡單地向該數組添加一條消息。