FlashMessenger在Zend公司2(FlashMessenger in Zend 2)

2019-09-21 17:42发布

我做的Zend 2研究。 现在我签FlashMessenger助手。 似乎没有记载的方式来调用flashMessenger在layout.php中。 因为我想显示在位于布局D​​IV所有消息(错误或成功),我需要调用flashMessenger那里。 我不想通过控制器的动作,每次发送的消息,只是想行动只会增加消息和布局显示它们。

当我打开自定义的助手/库,但内置的解决方案是最好的。 (我做的Zend 1也没有太多的工作,所以我不知道是否能够容易地与Zend的甚至1)

我签一个后如何访问flashmessenger在我的布局文件,在Zend框架? 但它有zend的1.所以我想,如果有Zend公司在溶液中没有内置的两个1和2在所有定制的解决方案。

Answer 1:

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

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


Answer 2:

在您的控制器方法中添加此

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

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



文章来源: FlashMessenger in Zend 2