最近、Symfony1.2の新機能をいろいろ使っています。
便利になっているところは結構あるのですが、はまりどころも多いです。
他のサイトでも感想は書かれていますが、今日はサブフレームワークsfFormの印象を書きます。
1.sfFormは使わなくてもいい
Symfony1.0 から用意されているテンプレートヘルパクラスもありますので
sfFormを使わないという選択もあり得ます。
ただ、最新のAdminGeneratorはsfFormを利用しているので、そういった機能を使う場合には使わざるをえません。
また、次に説明するモデルとの連携機能を使うことで、生産性をあげることも可能なので、使わないというてはないと思います。
2. sfFormはモデルと連携できるsfFormPropel、sfFormDoctrine
sfFormはPropleやDoctrineと連携する機能があります。
これを使うと、
モデルに合わせて入力フォームを自動生成してくれます。
また、フォームに設定された値をバリデーションして、DBに保存するところまで面倒を見てくれます。
2.1. 1フォームが複数モデルに関係している場合
1フォームを複数モデルに分割して記録するような画面の場合、sfFormのモデルとの連携機能は貧弱で日本的な複雑な入力画面には向かないかもしれません。
そういった場合は、 モデル連携の機能は使わず、フォームはフォーム、モデルはモデルで扱い、アクション等で自分で連携処理を書いた方が混乱が少ないかもしれません。(手間は増大しますが、複雑怪奇なコードはなくなります。)
あるいはヘルパ関数とモデルクラスを利用したほうがいいと思います。
3. sfFormには子フォームを追加できる
sfFormにはembedFormメソッドというメソッドがあり、ここに別のフォームを追加することで、
階層構造を持ったフォームを作ることができます。
※sfFormDoctrine等を使う場合にはこれを使わない方がいいかもしれません。特に慣れないうちは、混乱すると思います。
もう少し使い込んで、使いどころをきめられればsfFormは結構いいのではないかと思います。