У меня есть контроллер с методом method_1(). В этом методе я вызываю метод_2(). В методе_2() у меня есть (try ... catch) - блок с определенными flashMesseges и перенаправление.Zend Framework 2 перенаправление() с flashMessenger не работает
$this->flashMessenger()->addErrorMessage("There are errors.");
return $this->redirect()->toRoute('home');
Но это не работает. Но если я напишу как
$this->redirect()->toRoute('home');
$this->flashMessenger()->addErrorMessage("There are errors.");
Все ОК. В методе_1() код
$this->flashMessenger()->addErrorMessage("There are errors.");
return $this->redirect()->toRoute('home');
хорошая работа. Я не понимаю. Кто-нибудь может мне помочь?
Класс A - перенаправление не работает. И сообщение добавляется в сеанс.
class A {
public function manageAction()
{
$view = new ViewModel();
$form = $this->getForm();
$form = $this->fillForm($form);
$view->form = $form;
return $view;
}
public function fillForm($form)
{
try {
// ...
} catch (\Exception $e) {
$this->flashMessenger()->addErrorMessage("Error");
return $this->redirect()->toRoute('home');
}
return $form;
}
}
Класс B - перенаправление рабочей. И сообщение напечатано.
class B {
public function manageAction()
{
$view = new ViewModel();
$form = $this->getForm();
$form = $this->fillForm($form);
$view->form = $form;
return $view;
}
public function fillForm($form)
{
try {
// ...
} catch (\Exception $e) {
$this->redirect()->toRoute('home');
$this->flashMessenger()->addErrorMessage("Error");
}
return $form;
}
}
Почему и как это работает?
Вы печатали эти сообщения об ошибках в файле вида (или макете)? – tasmaniski
Эти сообщения напечатаны в поле зрения (маршрут «домой»). Но в других представлениях эти мессенги не печатаются. – VEV
Я думаю, было бы лучше, если бы вы разместили весь свой контроллер и просмотрели сценарий; то, что вы написали, не должно быть причиной проблемы. – AlexP