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?