如何在symfony表单的表单类型上使用组序列?

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)

gou*_*oup 0

我究竟做错了什么?

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

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

我认为,当使用 Symfony 2.8 时,负责所有验证的自定义验证器是处理这种情况的最佳选择。