2015-10-01 57 views
0

我想验证一个数组使用验证组,因为一些条件,但验证组似乎不影响数组?Symfony2数组验证组

$params = [ 
    'type' => 'a', 
    'province' => 'b', 
    'district' => 'c' 
]; 

$constraints = new Collection([ 
    'type' => [new NotBlank()], 

    'province' => [new NotBlank(['groups' => ['selection']])], 
    'district' => [new NotBlank(['groups' => ['selection']])], 

    'distance' => [new NotBlank(['groups' => ['location']])], 
    'lat' => [new NotBlank(['groups' => ['location']])], 
    'lon' => [new NotBlank(['groups' => ['location']])], 
]); 

$errors = $this->container->get('validator')->validate($params, $constraints, ['selection']); 

验证错误:

Array[distance]: 
This field is missing. (code 1) 
Array[lat]: 
This field is missing. (code 1) 
Array[lon]: 
This field is missing. (code 1) 

感谢您的帮助!

回答

2

您需要使用'allowMissingFields' => true,这样的:如果约束NotBlank验证之前就存在领域

$constraints = new Collection(
'allowMissingFields' => true, 
'fields' => [ 
    'type' => [new NotBlank()], 

    'province' => [new NotBlank(['groups' => ['selection']])], 
    'district' => [new NotBlank(['groups' => ['selection']])], 

    'distance' => [new NotBlank(['groups' => ['location']])], 
    'lat' => [new NotBlank(['groups' => ['location']])], 
    'lon' => [new NotBlank(['groups' => ['location']])], 
]); 

https://symfony.com/doc/2.7/reference/constraints/Collection.html

的CollectionValidator正在检查。