Zend Framework action assistant FlashMessenger Usage Details, zendflashmessenger

Source: Internet
Author: User
Tags zend framework

Zend Framework action assistant FlashMessenger Usage Details, zendflashmessenger

This example describes how to use the Zend Framework action assistant FlashMessenger. We will share this with you for your reference. The details are as follows:

Flash Messenger is used to process Flash Messenger sessions. Flash Messenger is a magic assistant.

In this scenario, after a user is successfully registered, the user's name must be displayed on the prompt page. If the request is not passed through get, you can also pass the request through session.

The name of the user to be displayed. However, seesion operations are complex. You can use Flash Messenger to quickly implement this requirement.

The FlashMessenger assistant allows you to send messages that users may need to see in the next request.

Flash Messenger also uses Zend_Session_Namespace to store messages for future or next requests, but it is relatively simple.

Simple FlashMessenger usage:

Based on the helper_demo1 Project

New/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();  }}

Add/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">

Http://www.localzend.com/helper_demo1/public/user/register access
Redirect to http://www.localzend.com/helper_demo1/public/user/regtips

The source code of FlashMessager is as follows:

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

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.