【发布时间】: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