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;
}
}
なぜ、どのように機能するのですか?