我做的Zend 2研究。 现在我签FlashMessenger助手。 似乎没有记载的方式来调用flashMessenger在layout.php中。 因为我想显示在位于布局DIV所有消息(错误或成功),我需要调用flashMessenger那里。 我不想通过控制器的动作,每次发送的消息,只是想行动只会增加消息和布局显示它们。
当我打开自定义的助手/库,但内置的解决方案是最好的。 (我做的Zend 1也没有太多的工作,所以我不知道是否能够容易地与Zend的甚至1)
我签一个后如何访问flashmessenger在我的布局文件,在Zend框架? 但它有zend的1.所以我想,如果有Zend公司在溶液中没有内置的两个1和2在所有定制的解决方案。
我只写我自己的简单视图助手:
<?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 ?>
在您的控制器方法中添加此
$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; ?>
我认为这将有助于解决您的问题。