Zend 2中的FlashMessenger

时间:2012-08-27 05:57:35

标签: zend-framework zend-framework2

我正在做zend 2研究。现在我结账flashMessenger助手。似乎没有记录在layout.php中调用flashMessenger的方法。因为我想在布局的div处显示所有消息(错误或成功),我需要在那里调用flashMessenger。我不希望每次都通过控制器的动作发送消息,只想要动作只添加消息和布局显示它们。

虽然我对自定义helper / libs持开放态度,但内置解决方案是最好的。 (我也没有太多关于zend 1的工作,所以我不知道是否很容易用甚至zend 1.)

我结帐了一篇文章How do I access flashmessenger in my layout file, in zend framework?但是它有针对zend 1的自定义解决方案。所以我在想,如果zend在1和1中都没有内置的解决方案。 2.

2 个答案:

答案 0 :(得分:3)

我刚写了一个简单的viewhelper:

<?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 ?>

答案 1 :(得分:0)

在您的Controller方法中添加此

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

在module / Application / view / layout / {your-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; ?>

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