概要
よくある
「入力→確認→完了」
のような処理の場合。
フォームオブジェクトのバリデーションを用いて入力項目をチェックする。
ハマったところ
$form->isValid();
とすればバリデーション処理が走ってくれるが、これを確認画面で行なっても、入力項目に不備があった場合に入力画面に戻らず、そのまま確認画面が表示されてしまう。
対策
- 入力画面で入力項目を埋めた後、自分自身にPOSTする
- 入力画面のActionクラスでisValid()を用いる
- OKだったら⇒確認画面にリダイレクト
- NGだったら⇒入力画面が再表示される