代码之家  ›  专栏  ›  技术社区  ›  Mehmet Davut

Zend中的Flash信使类型

  •  15
  • Mehmet Davut  · 技术社区  · 15 年前

    在Zend中,是否可以或如何为FlashMessage提供类型?

    /* This is a "Success" message */
    $this -> _helper -> FlashMessenger('You are successfully created a post.'); 
    
    /* This is an "Error" message  */
    $this -> _helper -> FlashMessenger('There is an error while creating post.');
    
    /* This is just a "Notification" message */
    $this -> _helper -> FlashMessenger('Now you can see your Post');
    
    4 回复  |  直到 15 年前
        1
  •  23
  •   rafeca    15 年前

    我认为最好的方法是使用flashmessenger名称空间:

    /* success message */
    $this->_helper->FlashMessenger()->setNamespace('success')->addMessage('Post created!');
    
    /* error message */
    $this->_helper->FlashMessenger()->setNamespace('error')->addMessage('You have no permissions');
    

    然后在布局中,可以将消息添加到每个命名空间:

    <?php $flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');
    
    <?php if ($flashMessenger->setNamespace('success')->hasMessages()): ?>
        <div class="message success">
        <?php foreach ($flashMessenger->getMessages() as $msg): ?>
            <?php echo $msg ?>
        <?php endforeach; ?>
        </div>
    <?php endif; ?>
    
    <?php if ($flashMessenger->setNamespace('error')->hasMessages()): ?>
        <div class="message error">
        <?php foreach ($flashMessenger->getMessages() as $msg): ?>
            <?php echo $msg ?>
        <?php endforeach; ?>
        </div>
    <?php endif; ?>
    
        2
  •  3
  •   prodigitalson    15 年前

    有一次你用了assoc数组。。。我不确定这是否仍然是当前的。。。

    /* This is a "Success" message */
    $this -> _helper -> FlashMessenger(array('success' => 'You are successfully created a post.')); 
    
    /* This is an "Error" message  */
    $this -> _helper -> FlashMessenger(array('error' => 'There is an error while creating post.'));
    
    /* This is just a "Notification" message */
    $this -> _helper -> FlashMessenger(array('notice' => 'Now you can see your Post'));
    
        3
  •  3
  •   takeshin    15 年前

    这是可能的。本文中描述的示例实现:

    节选:

    class AuthController extends Zend_Controller_Action {
      function loginAction() {
        . . .
        if ($this->_request->isPost()) {
          $formData = $this->_request->getPost();
          if ($this->view->form->isValid($formData)) {
            . . .
          } else {
            $this->view->priorityMessenger('Login failed.', 'error');
          }
        . . .
      }
    }
    
        4
  •  0
  •   David    11 年前

    用于FlashMessenger的Zend Framework 1.12.x中的方法签名:

    public function addMessage($message, $namespace = null)
    public function getMessages($namespace = null)
    public function hasMessages($namespace = null)
    public function clearMessages($namespace = null)
    

    因此,要设置消息,以下操作将起作用:

    /* success message */
    $this->_helper->flashMessenger()->addMessage('Post created!', 'success');
    
    /* error message */
    $this->_helper->flashMessenger()->addMessage('You have no permissions', 'error');
    

    对于视图,应使用以下命令:

    <?php $flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');
    
    <?php if ($flashMessenger->hasMessages('success')): ?>
        <div class="message success">
        <?php foreach ($flashMessenger->getMessages('success') as $msg): ?>
            <?php echo $msg ?>
        <?php endforeach; ?>
        </div>
    <?php endif; ?>
    
    <?php if ($flashMessenger->hasMessages('error')): ?>
        <div class="message error">
        <?php foreach ($flashMessenger->getMessages('error') as $msg): ?>
            <?php echo $msg ?>
        <?php endforeach; ?>
        </div>
    <?php endif; ?>