2017-04-10 59 views
3

这个想法是首先验证是否所有必填字段都不为空。如果提供了所有必需的数据,则验证输入的值是否正确。群体序列的常见情况。如果我将new GroupSequence(["Basic", "Strict"])应用于validation_groups选项,那么即使所有字段都为空,表格也是有效的。如果validation_groups值设置为["Basic", "Strict"]该表单被正确验证但有所有约束,这不是我想要的。我究竟做错了什么?如何在symfony表单中对表单类型使用组序列?

这里是我的代码:

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

您是否尝试将GroupSequence映射放入表单数据类对象? (您的用户实体或任何DTO?)我无法在文档中找到任何直接在表单中使用它的引用(或者您有任何链接到您的用法)。 – goto

+0

你试过了吗“validation_groups”=> ['Default','Basic','Strict']? – Filchev

+0

@goto,没有DTO或实体可用,在这个项目中是不必要的。 Forms和Validation组件在Symfony标准分发之外独立工作。 –

回答

0

我在做什么错?

这是Symfony 2.8版的已知bug,并且是固定的更新版本。

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

我会假设,当使用Symfony 2.8时,一个custom validator负责处理所有验证是处理这种情况的最佳选择。

相关问题