1

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

虽然我对自定义助手/库持开放态度,但内置解决方案是最好的。(我在 zend 1 上也没有太多工作,所以我不知道即使是 zend 1 是否也能轻松实现。)

我签出一篇文章如何在我的布局文件中访问 flashmessenger,在 zend 框架中?但它有针对 zend 1 的自定义解决方案。所以我在想 zend 是否在 1 和 2 中都没有内置解决方案。

4

2 回答 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 ?>
于 2012-08-30T20:00:50.620 回答
0

在你的控制器方法中添加这个

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

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

于 2016-08-01T14:59:24.810 回答