• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Zend Framework动作助手FlashMessenger用法详解_PHP

php 搞代码 4年前 (2022-01-26) 23次浏览 已收录 0个评论

本文实例讲述了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

_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

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>test</title><body>messages);?>

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

FlashMessager实现源码如下

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-><p style="color:transparent">。本文来源gao!%daima.com搞$代*!码网1</p><cite>搞代gaodaima码</cite>{$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程序设计有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Zend Framework动作助手FlashMessenger用法详解_PHP

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址