Zend Framework动作助手FlashMessenger用法详解
网络编程 2021-07-05 09:10www.168986.cn编程入门
这篇文章主要介绍了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,Wele!'); $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://.w3./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://.localzend./helper_demo1/public/user/register
跳转到http://.localzend./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./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. 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://.zend.) @license http://framework.zend./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://.zend.) @license http://framework.zend./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() - plete 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相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程