【问题标题】:How to disable required field in symfony form?如何禁用 symfony 表单中的必填字段?
【发布时间】:2018-08-31 05:59:02
【问题描述】:

我有一个需要邮政编码的地址表单类型。这是代码

class AddressType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('poBox', TextType::class, ['required' => false])
            ->add('roomNumber', TextType::class, ['required' => false])
            ->add('building', TextType::class, ['required' => false])
            ->add('street', TextType::class, ['required' => false])
            ->add('street2', TextType::class, ['required' => false])
            ->add('country', null, [
                "invalid_message" => "Country is required."
            ])
            ->add('state', null, [
                "invalid_message" => "State is required."
            ])
            ->add('city', null, [
                "invalid_message" => "City is required."
            ])
            ->add('zipCode', TextType::class, [
                "invalid_message" => "Postal Code given is not a valid value.",
                "required" => true,
                "constraints" => [
                    new NotBlank(["message" => "Postal Code is required"]),
                    new Length(["min" => 5, "max" => 5, "exactMessage" => "Postal Code must be a 5-digit code" ]),
                    new Regex(["pattern" => "/^[0-9]+$/", "message" => "Postal code must be numbers only"])
                ]
            ]);
    }

如您所见,只有我需要的邮政编码。我还有另一种表单类型,我称之为 Person 类型。这个表单类型,我继承了AddressType类。但如您所见,我禁用了必填字段(false)。

class PersonType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('firstName')
                ->add('lastName')
                ->add('address', AddressType::class, ['required' => false]);

           $builder->get('address')->setRequired(false);                            
        }
    }

每次我提交表单时,我总是收到表单错误postal code is required。我已经在 AddressType 的人员类型表单中禁用了必填字段。我无法将邮政编码的必填字段更改为 false,因为其他表单类型(如 CompanyType)需要邮政编码。是否有人在如何将必填字段更改为 false 时遇到此类问题?

【问题讨论】:

    标签: php symfony-3.2


    【解决方案1】:

    您只需添加此代码

    $builder->get('address')->setRequired(false);
    

    【讨论】:

      猜你喜欢
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2015-12-23
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多