У меня есть два вопроса, связанных с помощником представления FlashMessenger. Оба вопроса должны сделать этот код:
Мой метод действия:
private $_messages; // set to $this->_helper->FlashMessenger; in init()
public function loginAction() {
// > login validation <
// Switch based on the result code
switch ($result->getCode()) {
// > snip several cases <
case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
$this->_messages->addMessage("That wasn't the right password.");
break;
case Zend_Auth_Result::SUCCESS:
$this->_messages->addMessage('Logged you in successfully. Welcome back!');
$this->_helper->Redirector('index', 'home');
break;
}
// >snip<
$this->view->messages = $this->_messages->getMessages();
$this->render();
}
Сценарий просмотра моего макета (Zend_Layout):
<?php if (isset($this->messages) && count($this->messages) > 0) {
print_r($this->messages);
//$this->partialLoop('partials/messages.phtml', $this->messages);
} ?>
Почему сообщение не выводится при первой установке?
У меня есть ощущение, что это связано с тем, что мессенджер хранится в сеансах, но я уверен, что это связано с моей реализацией.
Когда я отправляю неверное значение в свою форму, я не получаю сообщения, пока не отправлю форму снова или не обновлю ее.
Как отправить это помощнику PartialLoop
?
Вывод мессенджера примерно такой:
Array(
[0] => 'Message',
[1] => 'Second message' //etc.
)
Но это не годится для PartialLoop
, так как мне нужно получить сообщение (которое требует, чтобы каждое сообщение было массивом, содержащим пару ключ/значение 'message' => 'Message string'
).
Есть ли лучший метод вместо перезаписи массива перед его отправкой в представление?