Symfony2 - コントローラの基本形、フォーム送信データのバインドについて

フォーム送信データのバインドについて、日本語ドキュメント を見てみると2.0時代の書き方になっている様でしたので、本家の情報を確認してみました。

結論

コントローラの基本形は以下になります。

$form->handleRequest($request);

if ($form->isSubmitted()) {
  // do something...

  if ($form->isValid()) {
      // do something...

      return $this->redirect($this->generateUrl(...));
  }
}
  • isSubmitted()で、フォームから送信されたかどうかを確認できます。
  • フォームが送信されなかった場合はisValid()はfalseを返します。
    バリデーションエラーの場合もisValid()はfalseを返します。
  • POSTの二重送信を防ぐために、リダイレクトする事はよい事です。

経緯

  • UPGRADE FROM 2.0 to 2.1
    • bindRequest() は bind() にしましょう。
  • UPGRADE to 2.3
    • bind()は非推奨、代わりにsubmit()を使いましょう。
      でもsubmit()は3.0で削除される方針なので非推奨、新たに導入されたhandleRequest()を使ってね。

...は、はい。