У меня есть два вопроса, связанных с помощником представления 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'
пару ключ / значение).
Есть ли лучший способ вместо переписывания массива перед отправкой его в представление?