2011-08-10 62 views
1

フォームに同じ追加フィールドを追加したいのですが、データオブジェクトに1つのフィールドを入れたくありません。エンティティに定義されていないフィールドを追加するには?

$formBuilder = $this->get('form.factory')->createBuilder(new LeadType(), new LeadInfo()); 

    $formBuilder->add('newsSubscribe', 'checkbox'); 
    $form = $formBuilder->getForm(); 

しかし、そこには「newsSubscribe」フィールドは、私のオブジェクトの上にある、と私は(サブスクリプションがLeadInfoとは関係ありませんので)

追加したくないので、私は、エラーを取得する:ここで は一例です

これを解決する方法はありますか?

答えて

3

field type(ほとんどのフォームフィールドはデフォルトで継承されます)は、フィールドが表すドメインオブジェクトのプロパティを示すproperty_pathオプションを提供します。あなたはそうのようなドメインオブジェクトに書き込みしないあなたのチェックボックスを伝えることができます:

$formBuilder->add('newsSubscribe', 'checkbox', array(
    'property_path' => false, 
)); 

あなたはデフォルトのオプションを上書きすることがあり、配列を渡していることから、同様にあなたのチェックボックスの他のオプションを定義する必要がありますが、ということもあなたを始めさせるでしょう。このコードではnewsSubscribeがあなたのPOST変数で利用可能になりますが、symfonyはそれをドメインオブジェクトプロパティに書き込もうとしません。

+0

ありがとうございます、正常に動作します! – fckt

関連する問題