См. это в ZF2 (лучшие практики):
Плагин FlashMessenger отправляет ваше сообщение в пул ожидания (через плагин FlashMessenger Zend MVC), который будет отображаться при запросе другой страницы (через ViewHelper). Флэшмессенджер).
Существует 4 типа сообщений, которые можно интегрировать с уведомлениями Bootstrap (ошибка, информация, по умолчанию, успех).
Теперь давайте потренируемся
В разделе Действие в Контроллере вы должны ввести свое сообщение и свой бренд:
use Zend\Mvc\Controller\Plugin\FlashMessenger;
public function registerAction(){
if($formValid){
$this->flashMessenger()->addSucessMessage('Saved!');
} else{
$this->flashMessenger()->addErrorMessage('Fail!');
}
//redirect to other route and show message
return $this->redirect()->toRoute('app');
}
В View (.phtml) вам нужно использовать только:
#show messages of addErrorMessage();
echo $flash->render('error', array('alert', 'alert-dismissible', 'alert-danger'));
#show messages of addInfoMessage();
echo $flash->render('info', array('alert', 'alert-dismissible', 'alert-info'));
#show messages of addMessage();
echo $flash->render('default', array('alert', 'alert-dismissible', 'alert-warning'));
#show messages of addSucessMessage();
echo $flash->render('success', array('alert', 'alert-dismissible', 'alert-success'));
В View при использовании Bootstrap:
$flash = $this->flashMessenger();
$flash->setMessageOpenFormat('<div>
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">
×
</button>
<ul><li>')
->setMessageSeparatorString('</li><li>')
->setMessageCloseString('</li></ul></div>');
echo $flash->render('error', array('alert', 'alert-dismissible', 'alert-danger'));
echo $flash->render('info', array('alert', 'alert-dismissible', 'alert-info'));
echo $flash->render('default', array('alert', 'alert-dismissible', 'alert-warning'));
echo $flash->render('success', array('alert', 'alert-dismissible', 'alert-success'));
Теперь хак, если вы хотите просматривать FlashMessages на экране без запроса на страницу перенаправления (идеально подходит для ошибок формы, которые вы не перенаправляете или AJAX на другую страницу), используйте эту технику.
public function registerAction(){
if($formValid){
$this->flashMessenger()->addSucessMessage('Saved!');
} else{
#add to pool
$this->flashMessenger()->addErrorMessage('Fail');
#merge message
$feedback = array_merge(
$this->flashMessenger->getErrorMessages(),
$this->flashMessenger->getCurrentErrorMessages()
);
#clear pool
$this->clearCurrentErrorMessages();
}
#message in variable to VIEW
new ViewModel(array(
'feedback' => $feedback,
));
}
}
Если вы хотите углубиться в это лучше, перейдите по ссылкам Официальная документация Zend 2, дает опробованные доступные методы, очень поможет:
ВИД -> http://framework.zend.com/manual/current/en/modules/zend.view.helpers.flash-messenger.html
КОНТРОЛЛЕР -> http://framework.zend.com/manual/current/en/modules/zend.mvc.plugins.html#zend-mvc-controller-plugins-flashmessenger
person
Ríder Cantuária
schedule
23.02.2016