Я добавлю это, чтобы дать больше информации о том, как работает класс FlashMessenger (у меня были некоторые проблемы с его выяснением).
Я где-то читал, что сеанс должен быть запущен в Bootstrap.php с использованием
Zend_Session::start();
.. но мой код работал без этого, поэтому я подозреваю, что сессии уже запущены.
Мы находимся в объекте контроллера, и вызывается метод действия. Затем что-то происходит, например, вставка или редактирование в базе данных, что-нибудь действительно.
Теперь мы установили одно или несколько сообщений. Я использую следующий синтаксис.
$this->_helper->FlashMessenger("Message in a bottle.");
Что точно так же, как
$this->_helper->FlashMessenger->addMessage("Message in a bottle.");
Это устанавливает сообщение в сеансе, вы можете проверить это непосредственно, позвонив
print_r($this->_helper->FlashMessenger->getMessages());
die();
Теперь есть перенаправление на новый URL-адрес (так что в основном новый запрос), внутри контроллера + действие, которое обрабатывает запрос, мы добавим сообщения в представление следующим образом:
$this->view->flashMessages = $this->_helper->FlashMessenger->getMessages();
Теперь у нас есть выбор, куда выводить эти сообщения. Мы можем сделать это внутри представления, которое «принадлежит» определенному контроллеру, так что это может быть
views/scripts/index/index.phtml
Недостатком здесь является то, что вам нужно будет добавить код, выводящий сообщения, в каждый видовой скрипт, который его использует. Это не очень DRY .
На мой взгляд, лучшим решением является следующее. Выведите эти сообщения в файле, в котором вы определяете базовый макет вашего приложения. Это, наверное,
layouts/scripts/index.phtml
Я написал следующий код там.
<?php if( isset($this->flashMessages) && !empty($this->flashMessages) ){ ?>
<ul id="messages">
<?php foreach( $this->flashMessages as $message ){?>
<li>
<?php echo $message;?>
</li>
<?php } ?>
</ul>
<?php } ?>