我们的想法是首先验证所有必填字段是否为空。如果提供了所有必需的数据,则验证输入的值是否正确。组序列的通常情况。然而,当我将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"])
]);
}
}
答案 0 :(得分:0)
我做错了什么?
这是Symfony 2.8版的已知bug版本,并且是较新的版本。
但我也没有看到任何文档显示您在配置GroupSequence
选项时可以使用validation_groups
。
我认为在使用Symfony 2.8时,负责所有验证的custom validator是处理这种情况的最佳选择。