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

时间:2017-04-10 14:25:58

标签: php symfony symfony-forms symfony-2.8 symfony-validator

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

1 个答案:

答案 0 :(得分:0)

  

我做错了什么?

这是Symfony 2.8版的已知bug版本,并且是较新的版本。

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

我认为在使用Symfony 2.8时,负责所有验证的custom validator是处理这种情况的最佳选择。