5

这个想法是首先验证所有必填字段是否不为空。如果提供了所有必需的数据,则验证输入的值是否正确。组序列的常见情况。但是,当我申请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"])
        ]);
    }
}
4

1 回答 1

0

我究竟做错了什么?

这是 Symfony 2.8 版的一个已知错误,在较新的版本中已修复。

但是我也没有看到任何文档表明您可以GroupSequence在配置validation_groups选项时使用。

我假设在使用 Symfony 2.8 时,一个负责所有验证的自定义验证器是处理这种情况的最佳选择。

于 2017-09-27T12:41:40.040 回答