バリデーションの効かせ方

概要

よくある
「入力→確認→完了」
のような処理の場合。
フォームオブジェクトのバリデーションを用いて入力項目をチェックする。

ハマったところ

$form->isValid();

とすればバリデーション処理が走ってくれるが、これを確認画面で行なっても、入力項目に不備があった場合に入力画面に戻らず、そのまま確認画面が表示されてしまう。

対策

  1. 入力画面で入力項目を埋めた後、自分自身にPOSTする
  2. 入力画面のActionクラスでisValid()を用いる
    • OKだったら⇒確認画面にリダイレクト
    • NGだったら⇒入力画面が再表示される