本文实例讲述了Zend Framework动作助手FlashMessenger用法。分享给大家供大家参考,具体如下:
FlashMessenger 用来处理Flash Messenger会话;FlashMessenger是一个神奇的助手。
有这么一种场景,在用户注册成功后,需要在提示页面上显示用户的名称,如果不通过get传递请求,当然你也可以通过session传递
要显示的用户名称。但是seesion的操作难免复杂,可以使用Flash Messenger快速的实现这个需求。
FlashMessenger助手允许你传递用户可能需要在下个请求看到的消息。
FlashMessenger简单用法
:在helper_demo1项目的基础上
新增/helper_demo1/application/controllers/UserController.PHP
PHP;">
_flashMessenger =
$this->_helper->getHelper('FlashMessenger');
$this->initView();
}
public function registerAction()
{
$this->_flashMessenger->addMessage('xxxxx,Welcome!');
$this->_helper->redirector('regtips');
}
public function regtipsAction()
{
$this->view->messages = $this->_flashMessenger->getMessages();
}
}
新增/helper_demo1/application/views/scripts/user/regtips.phtml
PHP;">
<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
test
messages);
?>
访问http://www.localzend.com/helper_demo1/public/user/register 跳转到http://www.localzend.com/helper_demo1/public/user/regtips
FlashMessager实现源码如下
PHP;">
getName());
foreach (self::$_session as $namespace => $messages) {
self::$_messages[$namespace] = $messages;
unset(self::$_session->{$namespace});
}
}
}
/**
* postDispatch() - runs after action is dispatched,in this
* case,it is resetting the namespace in case we have forwarded to a different
* action,Flashmessage will be 'clean' (default namespace)
*
* @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface
*/
public function postDispatch()
{
$this->resetNamespace();
return $this;
}
/**
* setNamespace() - change the namespace messages are added to,useful for
* per action controller messaging between requests
*
* @param string $namespace
* @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface
*/
public function setNamespace($namespace = 'default')
{
$this->_namespace = $namespace;
return $this;
}
/**
* resetNamespace() - reset the namespace to the default
*
* @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface
*/
public function resetNamespace()
{
$this->setNamespace();
return $this;
}
/**
* addMessage() - Add a message to flash message
*
* @param string $message
* @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface
*/
public function addMessage($message)
{
if (self::$_messageAdded === false) {
self::$_session->setExpirationHops(1,null,true);
}
if (!is_array(self::$_session->{$this->_namespace})) {
self::$_session->{$this->_namespace} = array();
}
self::$_session->{$this->_namespace}[] = $message;
return $this;
}
/**
* hasMessages() - Wether a specific namespace has messages
*
* @return boolean
*/
public function hasMessages()
{
return isset(self::$_messages[$this->_namespace]);
}
/**
* getMessages() - Get messages from a specific namespace
*
* @return array
*/
public function getMessages()
{
if ($this->hasMessages()) {
return self::$_messages[$this->_namespace];
}
return array();
}
/**
* Clear all messages from the prevIoUs request & current namespace
*
* @return boolean True if messages were cleared,false if none existed
*/
public function clearMessages()
{
if ($this->hasMessages()) {
unset(self::$_messages[$this->_namespace]);
return true;
}
return false;
}
/**
* hasCurrentMessages() - check to see if messages have been added to current
* namespace within this request
*
* @return boolean
*/
public function hasCurrentMessages()
{
return isset(self::$_session->{$this->_namespace});
}
/**
* getCurrentMessages() - get messages that have been added to the current
* namespace within this request
*
* @return array
*/
public function getCurrentMessages()
{
if ($this->hasCurrentMessages()) {
return self::$_session->{$this->_namespace};
}
return array();
}
/**
* clear messages from the current request & current namespace
*
* @return boolean
*/
public function clearCurrentMessages()
{
if ($this->hasCurrentMessages()) {
unset(self::$_session->{$this->_namespace});
return true;
}
return false;
}
/**
* getIterator() - complete the IteratorAggregate interface,for iterating
*
* @return ArrayObject
*/
public function getIterator()
{
if ($this->hasMessages()) {
return new ArrayObject($this->getMessages());
}
return new ArrayObject();
}
/**
* count() - Complete the countable interface
*
* @return int
*/
public function count()
{
if ($this->hasMessages()) {
return count($this->getMessages());
}
return 0;
}
/**
* Strategy pattern: proxy to addMessage()
*
* @param string $message
* @return void
*/
public function direct($message)
{
return $this->addMessage($message);
}
}
更多关于zend相关内容感兴趣的读者可查看本站专题:《@L_404_0@》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。