0

I have an address form type that required zipcode. here's the codes

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

As you can see only zipcode that I required. I have another form type, I called it Person type. This form type, I inherit the AddressType class. But as you can see I disable the required field (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);                            
        }
    }

every time I submit the form I always get form error postal code is required. I already disable required field in person type form for AddressType. I cannot change the required field of postal code into false because other form type(like CompanyType) requiring postal code. Does someone experience this kind of issue on how can I change the required field to false?

user3818576
  • 2,979
  • 8
  • 37
  • 62

1 Answers1

0

You need just add this code

$builder->get('address')->setRequired(false);
ttrasn
  • 4,322
  • 4
  • 26
  • 43