Pav*_*rov 5 php symfony-forms symfony symfony-validator symfony-2.8
这个想法是首先验证是否所有必填字段都不为空。如果提供了所有必需的数据,则验证输入的值是否正确。组序列的通常情况。无论如何,即使所有字段均为空白,当我申请new GroupSequence(["Basic", "Strict"])
该validation_groups
选项时,该表格仍然有效。如果将validation_groups
值设置为["Basic", "Strict"]
表单,则可以正确验证但具有所有约束,这不是我想要的。我究竟做错了什么?
这是我的代码:
class MyType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add("name", null, [
"constraints" => new NotBlank(["groups" => ["Basic"]])
])
->add("phone", MyPhoneType::class, [
"constraints" => [
new NotBlank(["groups" => ["Basic"]]),
new PhoneNumber(["groups" => ["Strict"])
]
])
->add("email", EmailType::class, [
"constraints" => [
new NotBlank(["groups" => ["Basic"]]),
new Email(["groups" => ["Strict"]]),
],
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
"validation_groups" => new GroupSequence(["Basic", "Strict"])
]);
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
这是Symfony 2.8 版的一个已知错误,并已在较新版本中修复。
但我也没有看到任何文档表明您可以使用GroupSequence
配置选项validation_groups
。
我认为,当使用 Symfony 2.8 时,负责所有验证的自定义验证器是处理这种情况的最佳选择。