首页 > 编程 > PHP > 正文

关于Zend Framework动作助手FlashMessenger的用法分析

2020-03-22 16:50:13
字体:
来源:转载
供稿:网友
这篇文章主要介绍了Zend Framework动作助手FlashMessenger用法,分析了动作助手FlashMessenger的功能,并结合实例形式演示了FlashMessenger的使用技巧,需要的朋友可以参考下

本文实例讲述了Zend Framework动作助手FlashMessenger用法。分享给大家供大家参考,具体如下:

FlashMessenger 用来处理Flash Messenger会话;FlashMessenger是一个神奇的助手。

有这么一种场景,在用户注册成功后,需要在提示页面上显示用户的名称,如果不通过get传递请求,当然你也可以通过session传递

要显示的用户名称。但是seesion的操作难免复杂,可以使用Flash Messenger快速的实现这个需求。

FlashMessenger助手允许你传递用户可能需要在下个请求看到的消息。

FlashMessenger也是使用Zend_Session_Namespace来存储消息以备将来或下个请求来读取,但是相对简单一些。

FlashMessenger简单用法:

在helper_demo1项目的基础上

新增/helper_demo1/application/controllers/UserController.php

 ?phphtml' target='_blank'>class UserController extends Zend_Controller_Action protected $_flashMessenger = null; public function init() $this- _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

 !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN  http://www.w3.org/TR/html4/loose.dtd  html  head  meta http-equiv= Content-Type content= text/html; charset=UTF-8  title test /title  /head  body  ?phpvar_dump($this- messages); /body  /html 

访问http://www.localzend.com/helper_demo1/public/user/register
跳转到http://www.localzend.com/helper_demo1/public/user/regtips

FlashMessager实现源码如下

 ?php * Zend Framework * LICENSE * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * @category Zend * @package Zend_Controller * @subpackage Zend_Controller_Action_Helper * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @see Zend_Sessionrequire_once Zend/Session.php  * @see Zend_Controller_Action_Helper_Abstractrequire_once Zend/Controller/Action/Helper/Abstract.php  * Flash Messenger - implement session-based messages * @uses Zend_Controller_Action_Helper_Abstract * @category Zend * @package Zend_Controller * @subpackage Zend_Controller_Action_Helper * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id: FlashMessenger.php 23775 2011-03-01 17:25:24Z ralph $class Zend_Controller_Action_Helper_FlashMessenger extends Zend_Controller_Action_Helper_Abstract implements IteratorAggregate, Countable * $_messages - Messages from previous request * @var array static protected $_messages = array(); * $_session - Zend_Session storage object * @var Zend_Session static protected $_session = null; * $_messageAdded - Wether a message has been previously added * @var boolean static protected $_messageAdded = false; * $_namespace - Instance namespace, default is default  * @var string protected $_namespace = default  * __construct() - Instance constructor, needed to get iterators, etc * @param string $namespace * @return void public function __construct() if (!self::$_session instanceof Zend_Session_Namespace) { self::$_session = new Zend_Session_Namespace($this- 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);}

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP !

相关推荐:

关于Zend Framework中Zend_Config组件的用法

关于Zend Framework动作助手Url的用法

关于Zend Framework中Zend_Db_Table_Rowset的用法

以上就是关于Zend Framework动作助手FlashMessenger的用法分析的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表