Mam następujący problem. Przy błędnym zalogowaniu dodaje sobie jakąś tam wiadomość w akcji kontrolera:
$this->_flashMessenger->addMessage($sError);
Pokazuję ją sobie w templatce w ten sposób:
$aMessages = $this->layout()->messages; { echo '<div><ul>"; foreach ($this->layout()->messages as $sMessage) { echo "<li>".$this->translate($sMessage)."</li>"; } echo "</ul></div>"; }
Tak wygląda fragment bootstrapa, który pobiera wiadomości i wstawia je do layoutu
public function _initLayout() { // ... jakiś tam kod $oLayout = Zend_Layout::getMvcInstance(); $oLayout->messages = Zend_Controller_Action_HelperBroker::getHelper("flashMessenger")->getMessages(); }
(z resztą podmiana w templatce $this->layout()->messages na Zend_Controller_Action_HelperBroker::getHelper("flashMessenger")->getMessages() daje ten sam, dalej opisany efekt).
Tak więc w ten sposob wygląda owa konstrukcja. Efekt jest taki:
1. Loguję sie po raz pierwszy z błednymi danymi
2. Nie wyświetla mi żadnego błędu
3. Loguję się po raz drugi
4. Pokazują się błędy z pierwszego logowania
5. Loguję się po raz trzeci
6. Pokazują się błędy z drugiego logowania
i tak w kółko. var_dump($_SESSION) pokazuje, ze wartości są zmieniane tak jak trzeba - momentalnie, flashMessenger jednak odczytuje je po następnym cyklu dopiero. Co robię źle?