我正在做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.
答案 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; ?>
我认为这有助于解决您的问题。