У меня есть тип формы адреса, который требует почтовый индекс. вот коды
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"])
]
]);
}
Как видите, только тот почтовый индекс, который мне нужен. У меня есть другой тип формы, я назвал его Тип персоны. Этот тип формы, я наследую класс 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?