Zend框架:请求似乎是由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
,原因是如果我想显示一条消息而不必刷新页面,我可以简单地向该数组添加一条消息。