2014-01-06 45 views
0

我对symfony组验证有点困惑。symfony组验证工作如何进行

假设我有这样的代码

* @NotBlank(groups={"A", "B", "C"}) 
*/ 
private $description; 

当我提交表单,那么我手动进这样

$this->validator->validate($object, groups={"F", "A","C"})

组现在我想知道symfony会怎么做验证

  1. 是否symfony检查所有组即F,A,C应与A,B,C匹配,或者检查是否存在来自F,A,C的任何组在定义的gorup'A,B,C'中。因此,如果有任何项目maces,然后它进行验证

回答

2

如果您查看validate() method signature,您可能会明白,您不应该将$groups参数视为允许您注入验证组的参数。

它用于请求验证者验证给定对象某些约束组。

使用示例,

/* 
* @NotBlank(groups={"A", "B"}) 
*/ 
private $property1; 

/* 
* @NotBlank(groups={"C"}) 
*/ 
private $property2; 

/* 
* @NotBlank(groups={"B"}) 
*/ 
private $property3; 

然后,

$this->validator->validate($object, groups={"A", "C"}) 

将验证您的property1 & property2NotBlank约束。

但是打电话时,

$this->validator->validate($object, groups={"A", "B"}) 

只有property1 & property3被验证againt的NotBlank约束为group C,则不会调用。

1

Symfony列出来自组F, A, C的所有约束并将它们应用于您的数据。如果一个约束在2个或更多组中,它将只应用一次。

因此,关于您的示例,应该应用$ description字段中的NotBlank约束。