symfony,当表单没有这个字段时

问题描述 投票:-1回答:2
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表单字段:

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

当我提交表单时,c,d设置为null。当表单没有这个字段时,我不想更新c和d :)

forms symfony
2个回答
0
投票

而不是这个

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
投票

像这样更新你的buildForm函数。在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也必须可以为空

© www.soinside.com 2019 - 2024. All rights reserved.