Zend框架:请求似乎是由1个请求

问题描述:

是过时的我似乎遇到了奇怪的错误在我的请求参数似乎由1个请求过时Zend框架:请求似乎是由1个请求

我登录代码@pastebin

我试图说明我在视频中的观点@screenr

它的工作原理与它应该完全相同,这是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,原因是如果我想显示一条消息而不必刷新页面,我可以简单地向该数组添加一条消息。