2012-05-11 12 views
2

ここに示すように、http://symfony.com/doc/current/cookbook/form/dynamic_form_generation.htmlは、データイベントで動的にフォームを生成する可能性があります。新しいフィールド与えられた例においてsymfony2でFormBuilderを使用して動的フォームを生成するのは可能でしょうか?

は少し便利buildForm方法で提供さ FormBuilder よりFormFactoryで添加されます。

buildForm方法でダイナミックなフォームを構築する方法があります:これへの道をprovindingあなたは「データ」としてオプションの配列にオブジェクトを取得buildForm方法、インサイド

$this->createForm(new MyFormType(), $object); 

は、データに応じてフォームを作成します。

これはデータイベントほど強力ではありません(リクエストバインディングが例です)。

FormBuilderでデータイベントを使用する方法はありますか?静的フォームや動的フォームを構築しているかどうかにかかわらず、フォーム構築はシームレスに行う必要があります。

答えて

0

あなたはフィールドを作成することができます

public function buildView(FormView $view, FormInterface $form) 
{ 
    $data = $form->getClientData(); 
    if ($data && is_array($data) && count($data)) { 
     $children = $form->getChildren(); 
     foreach ($data as $k => $v) { 
      $children[$k]->add($this->form_factory->createNamed('hidden', 'name', $v)) 
     } 
    } 
} 
+1

ええ。すべてのものを混ぜると、このような助けで、 '' Form''または '* Type''の' 'buildView''であるかどうかを知ることができません。 – renoirb

関連する問題