Zend Framework动作助手FlashMessenger用法详解
发布:smiling 来源: PHP粉丝网 添加日期:2021-07-13 14:41:09 浏览: 评论:0
这篇文章主要介绍了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
- <?php
- 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>
- <?php
- var_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_Session
- */
- require_once 'Zend/Session.php';
- /**
- * @see Zend_Controller_Action_Helper_Abstract
- */
- require_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);
- }
- }
Tags: Framework FlashMessenger
相关文章
- ·zend framework中调用kindeditor编辑器实现方法(2015-02-24)
- ·PHP开源开发框架ZendFramework使用中常见问题说明及解决方案(2021-02-11)
- ·Yii Framework框架获取分类下面的所有子类方法(2021-02-28)
- ·zend framework中使用memcache的方法(2021-07-13)
- ·Zend Framework教程之Zend_Layout布局助手详解(2021-07-13)
- ·Zend Framework教程之模型Model基本规则和使用方法(2021-07-13)
- ·Zend Framework教程之模型Model用法简单实例(2021-07-13)
- ·Zend Framework教程之视图组件Zend_View用法详解(2021-07-13)
- ·Zend Framework实现Zend_View集成Smarty模板系统的方法(2021-07-13)
- ·Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解(2021-07-13)
- ·Zend Framework创建自己的动作助手详解(2021-07-13)
- ·Zend Framework动作助手Json用法实例分析(2021-07-13)
- ·Zend Framework动作助手Url用法详解(2021-07-13)
- ·Zend Framework动作助手Redirector用法实例详解(2021-07-13)
- ·Zend Framework教程之前端控制器Zend_Controller_Front用法详解(2021-07-13)
- ·Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解(2021-07-13)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)