2012-08-27 1 views
1

Я делаю zend 2 Study. Теперь я проверяю помощника flashMessenger. Кажется, нет документального способа вызвать flashMessenger в layout.php. потому что я хочу показать все сообщения (ошибка или успех) в div, расположенном в макете, мне нужно вызвать flashMessenger. Я не хочу отправлять сообщения каждый раз через действия контроллера и просто хочу, чтобы действие добавляло только сообщение, а макет показывал их.FlashMessenger в Zend 2

Хотя я открыт для пользовательских помощников/библиотек, но встроенное решение является лучшим. (я не много работы на Зенде 1 также, поэтому я не знаю, если это легко можно даже с Зендом 1.)

Я Checkout один постом How do I access flashmessenger in my layout file, in zend framework? Но есть собственное решение для Зенда 1. Так что я имею в виду если Зенд уже нет встроенного в растворе вообще как в 1 & 2.

ответ

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

Поздний чек (я новичок на ZF2 в это время :)). Но да, он работает как помощник вида. –

0

В вашем методе контроллера добавить этот

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

В модуле/Application/вид/макет/{ваш-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; ?> 

Я думаю, что это поможет решить вашу проблему ,