2017-04-10 57 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負責處理所有驗證是處理這種情況的最佳選擇。

相關問題