【发布时间】:2017-04-10 14:25:58
【问题描述】:
这个想法是首先验证所有必填字段是否不为空。如果提供了所有必需的数据,则验证输入的值是否正确。组序列的常见情况。但是,当我将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"])
]);
}
}
【问题讨论】:
-
您是否尝试将 GroupSequence 映射放在表单数据类对象中? (您的
User实体或任何DTO?)我在文档中找不到任何直接在表单中使用它的参考(或者您有任何使用链接)。 -
你有没有尝试过像 "validation_groups" => ['Default',"Basic", "Strict"] ?
-
@goto,没有可用的 DTO 和实体,在这个项目中是不必要的。表单和验证组件在 Symfony 标准分发之外独立工作。
-
@Filchev,是的 - 结果相同。
标签: php symfony symfony-forms symfony-2.8 symfony-validator