2017-12-22 10 views
-1
class FormType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('a') 
      ->add('b') 
      ->add('c') 
      ->add('d'); 
    } 
    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' =>'entity' 
     )); 
    } 
} 

HTMLフォームフィールド:私はフォームを送信するとsymfonyは、

<form> 
    <input name="a" value="a"> 
    <input name="b" value="b"> 
</form 

、Cは、Dはnullに設定されています。 フォームは、このフィールドを持っていない場合は、私はCとDを更新する必要はありません:)

+0

は、なぜあなたは 'FormType'にフィールドを追加していますか?多分ユースケースが違うかもしれませんし、フィールドを動的に追加することを検討すべきでしょうか? – dlondero

答えて

0

は、このようなあなたのbuildForm機能を更新し、この

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('a') 
     ->add('b') 
     ->add('c') 
     ->add('d'); 
} 

使用この

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('a') 
     ->add('b') 
     ->add('c', TextType::class , array('mapped' => false)) 
     ->add('d', TextType::class , array('mapped' => false)); 
} 
0

のinsted 。 The Symfony FormTypeでは、デフォルトですべてのフィールドが必要です。そして、あなたがそれらを使用しない場合

public function buildForm(FormBuilderInterface $builder, array $options) 
     { 
      $builder 
       ->add('a') 
       ->add('b') 
       ->add('c',TextType::class, ['required' => false,'empty_data' => null]) 
       ->add('d',TextType::class, ['required' => false,'empty_data' => null]); 
     } 

データベース・CとD内のエンティティを永続化したい場合にもNULL可能でなければなりません