我有一些带有 method_1() 的控制器。在这个方法中,我调用了 method_2()。在 method_2() 我有 (try...catch) - 使用定义的 flashMesseges 和重定向阻止。
$this->flashMessenger()->addErrorMessage("There are errors.");
return $this->redirect()->toRoute('home');
但它不起作用。但是如果我写成
$this->redirect()->toRoute('home');
$this->flashMessenger()->addErrorMessage("There are errors.");
一切都好。在 method_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;
}
}
为什么以及如何工作?