多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > ZendFramework > Zend Framework教程-Zend_Helpers-動作助手-FlashMessenger

Zend Framework教程-Zend_Helpers-動作助手-FlashMessenger

來源:程序員人生   發布時間:2013-10-21 07:08:15 閱讀次數:3596次
FlashMessenger 用來處理Flash Messenger會話;FlashMessenger是一個神奇的助手。
有這么一種場景,在用戶注冊成功后,需要在提示頁面上顯示用戶的名稱,如果不通過get傳遞請求,當然你也可以通過session傳遞
要顯示的用戶名稱。但是seesion的操作難免復雜,可以使用Flash Messenger快速的實現這個需求。
FlashMessenger助手允許你傳遞用戶可能需要在下個請求看到的消息。
FlashMessenger也是使用Zend_Session_Namespace來存儲消息以備將來或下個請求來讀取,但是相對簡單一些。




FlashMessenger簡單用法


在helper_demo1項目的基礎上
新增/helper_demo1/application/controllers/UserController.php


<?phpclass 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);    }}


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产成人毛片亚洲精品不卡 | 在线91色| www.亚洲第一 | 成人毛片免费视频播放 | 国产精品福利在线观看免费不卡 | 欧美一级毛片欧美大尺度一级毛片 | 亚洲a成人网77777在线 | 欧美成人免费网在线观看 | 一区二区三区日韩精品 | 国内交换一区二区三区 | 欧美一级永久免费毛片在线 | 真人性做爰aa毛片免费视频观看 | 99re热久久| 最新国产在线观看福利 | 欧美交 | 欧美黑人巨大 | 国产精品一级视频 | 精品国产网红福利在线观看 | 欧美高清一级 | 国产成人高清精品免费5388密 | 国产精品99爱免费视频 | 国产日韩欧美精品一区二区三区 | 亚洲欧洲一区二区三区在线 | 国产91久久久久久久免费 | 羞羞首页登录界面入口免费 | 国产欧美精品一区二区 | 欧美精品99久久久久久人 | 国产精品久久久久影视不卡 | 伊人久久久久久久久久 | 中文字幕精品一区二区2021年 | 亚洲欧美另类在线观看 | 在线高清国产 | 国产精品一区二区不卡 | 在线播放人成午夜免费视频 | 77777亚洲午夜久久多人 | 久久久久久国产精品免费 | 一区二区高清视频 | 国产在线91区精品 | 久久天天躁夜夜躁狠狠躁2020 | 日韩精品a在线视频 | 岛国片在线播放 |