Forms symfony,当窗体没有此字段时

Forms symfony,当窗体没有此字段时,forms,symfony,Forms,Symfony,html表单字段: class FormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('a') ->add('b') ->add('c') ->add('d'

html表单字段:

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'
        ));
    }
}

相反

<form>
    <input name="a" value="a">
    <input name="b" value="b">
</form
用这个

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

像这样更新buildForm函数。在Symfony FormType中,默认情况下,所有字段都是必需的

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));
}

如果要持久化数据库c和d中的实体也必须为空

如果不想使用字段,为什么要向
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] );
        }