ymknの日記スマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。(Symfony2)PHPせっかくEntityにNotBlankアノテーションなりMaxLengthアノテーションなりを付与しているにもかかわらず、Symfony2はそれをバリデーションに使用するばかりでFormBuilderでは参照してくれない。そのため、たとえばinput要素にmax_length属性を付与する場合はFormBuilder.addメソッド呼び出し時に引数optionにmax_lengthやrequiredなどを改めて指定しなければならない。これではEntityのアノテーションを修正した際に、FormBuilderを使用している箇所も併せて修正しなければならなくなってしまい、保守性が悪い。そこで、アプリケーションで使用する基底Controllerに下記のようなメソッドを追加し、Entityに付与されているアノテーションからFormBuilderに渡す引数optionを生成できるようにしてみた。}(略)これでEntityのアノテーションからOptionを作るという当初の目的は達成できるが、getFormOptionFromEntityメソッドに改めてEntityとプロパティ名を記述しなければならないのがダサい。FormBuilderのaddメソッドはEntityもプロパティ名もすでに知っているため、カスタムFormBuilderを実装し、それのaddメソッドをオーバーライドして、optionが明示的に与えられなかった場合はgetFormOptionFromEntityを呼ぶような動作にすれば凄くきれいだと思う。カスタムFormBuilderをSymfonyのお作法に則って作成する方法をまだ調べられていないのでこの辺で。Blog|ブログを報告する。