2012-08-27 22 views
1

我在做zend 2学习。现在我结帐flashMessenger helper。看起来在layout.php中没有文档方式调用flashMessenger。因为我想在位于布局的div处显示所有消息(错误或成功),所以我需要在那里调用flashMessenger。我不想每次通过控制器的操作发送消息,只想要操作只添加消息和布局显示它们。Zend 2中的FlashMessenger

虽然我打开定制助手/库但内置解决方案是最好的。我也没有太多的工作在zend 1,所以我不知道它是否很容易与甚至zend 1.)

我签出一个职位How do I access flashmessenger in my layout file, in zend framework?但它有自定义的解决方案,所以我想如果Zend公司没有在溶液中内置所有在这两个1 & 2.

回答

3

我只是写我自己的简单视图助手:

<?php 

namespace My\View\Helper; 

use Zend\View\Helper\AbstractHelper; 

class FlashMessenger extends AbstractHelper 
{ 
    protected static $_flashMessenger; 

    public function __invoke($namespace = 'default') { 

     if (!self::$_flashMessenger) { 

      self::$_flashMessenger = new \Zend\Mvc\Controller\Plugin\FlashMessenger; 
     } 

     return self::$_flashMessenger->setNamespace($namespace); 
    } 
} 

这样使用它:

<? if ($this->flashMessenger()->hasMessages()): ?> 
    <ul> 
    <? foreach ($this->flashMessenger()->getMessages() as $message): ?> 
     <li><?= $message></li> 
    <? endforeach ?> 
    </ul> 
<? endif ?> 
+0

迟到检查(我是ZF2那时的新手:))。但是,它可以用作视图助手。 –

0

在你的控制器的方法添加此

$this->flashMessenger()->addMessage('Your Flash message'); 

在模块/应用/视图/布局/ {您-layout.phtml}补充一点:

<div> 
<?php if ($this->flashMessenger()->hasMessages()): ?> 
    <div class="alert alert-info"> 
     <?php foreach ($this->flashMessenger()->getMessages() as $message): ?> 
      <?php echo $message; ?> 
     <?php endforeach; ?> 
    </div> 
<?php endif; ?> 

我认为这将有助于解决您的问题。