新しくパソコン(MacBookPro)を新調しました。インテル製のSSDも入れ変えて快適生活に浸かっています。今回はsymfonyのFormで確認画面を挟んだシンプルな流れのシステムの作り方です。最初にsymfonyを始める方のためにもまとめてみたいと思います。流れで処理を行うことです。入力画面で情報を入力し、確認画面で入力内容を確認し、完了画面を表示する流れをsymfonyのFormを使って作成していきます。サンプル用に作成するスキーマ情報は下記のような感じで作成しました。}登録フォームのオブジェクトを最低限で編集します。$this['updated_at']);}}次に入力フォームのアクションを作成します。$form;}作成して実行すると下記のようなイメージになります。※jobeetのデザインを使わせてもらいました。次に確認画面のアクション(confirm)を実装します。入力内容をFromにbindしないといけません。$form;}ここで注目すべきは「$this->processForm」です。「$this->processForm」は確認画面と登録処理実行を分けて行うメソッドとして作成したものです。送られてきた値をセッションに保存します。登録処理実行の場合:第2引数にセッションに保存した入力値のデータ配列を渡し、Formへbindしてsaveを行います。実際には下記のように実装します。$form;}確認画面のテンプレートを用意します。確認内容の場合はフォームの入力値ではなく、セットされたモデルのオブジェクトを利用しています。?></td></tr></tbody></table></form>実際に表示すると。登録処理部分の実装します。※createアクションは表示するテンプレートはありません。登録成功:完了画面へリダイレクトする。登録失敗:入力フォームを表示する。$form;$this->setTemplate('new');}}最後に完了画面のアクションとテンプレートを作って完成です。長くなってしまいましたが、コツとしてはprocessFormメソッドで処理をまとめることと、セッションに保存する値はフォームの入力値を保存することです。※間違えてもセッションにFormオブジェクトは保存しないようにしましょう。同じような「入力フォーム→確認ページ→完了ページ」の流れをより簡単に作成できるようになります。メソッドが使われています。メソッドでウィジェットをカスタマイズしたりできます。メソッドを追加することで、すべてのフォームに共通する処理を記述することができます。多少のルールを知っておかないと、意図したように処理されません。setup()→configure()の順番この順で呼び出されます。すべてを書き換えるこれらのメソッドの実装コードを見ると分かりますが、それぞれウィジェットスキーマオブジェクト、バリデータースキーマオブジェクトが新規にインスタンス化され、既存のものと置き換わります。このメソッドを呼ぶ以前にウィジェットスキーマオブジェクトに対して設定していた情報は失われるということです。}↑のコードだと、設定が反映されません。親クラスのsetup()メソッドで、一旦ウィジェットスキーマオブジェクトが破棄されてしまうためです。本題に入る前に、symfonyに関連するお知らせが何点かあります。1.4は1.3から古い機能を削除したバージョンになります。大きな変更点として、以下のような内容があげられます。◆Doctrineが1.0から1.2、Propelが1.3から1.4へバージョンアップ詳しいことについては、以下のリンクをご参照ください。symfony」(日本名:もっと知りたいsymfony)です。昨年のJobeetのように12月1日から24日まで1日ずつ公開していく形式ですが、今回は前回と大きな違いがあります。なんと今回のアドベントカレンダーは日本語版も同時公開となっています。テーブル継承の活用」の翻訳をさせていただいてます。symfonyはレシピブックのような形で、symfonyをすでにお使いになっている方々の様々なニーズにも応えられる内容となっています。symfonyを、といったように、symfonyの学習の流れが出来上がってきたのかなあという感じです。現時点ですべての章が公開されているわけではありませんが、symfonyをもっと知りたいすべての方々にお勧めできる内容ですので、ぜひぜひ見てみてください!また、おかしな部分がありましたらこのブログのコメントでも結構ですのでご連絡いただけましたら幸いです。フォームフィルターとはsymfonyのフォームオブジェクトの検索用の拡張をしたクラスです。今回はこのフォームフィルターの仕組みや活用方法などをご紹介していきます。前述の通りフォームフィルターはフォームの拡張です。持っており、入力フォームを作成し、入力内容のバリデーションをおこなう流れはフォームオブジェクトとほぼ同じです。拡張も用意されています。実際には入力された値をもとにDBから取得するオブジェクトのフィルタリングを行うのが主な使い方になると思いますので、今回はsfFormFilterDoctrineに絞ってみていきます。◆フォームフィルターを使って検索フォームを実装する何はともあれ、フォームフィルターオブジェクトを実際に作成してみましょう。1.4で動かしていきます。以下のスキーマとフィクスチャーを用意しましょう。event."今回はサンプルとして、symfonyのメソッドを検索するフォームを作ります。sfClassはクラス、sfMethodはメソッドです。