我对symfony组验证有点困惑。
假设我有这段代码
* @NotBlank(groups={"A", "B", "C"})
*/
private $description;
当我提交表格时,我手动注入这样的组
$this->validator->validate($object, groups={"F", "A","C"})
现在我想知道symfony将如何进行验证
F,A,C
应该与A,B,C
匹配,或者它检查来自F,A,C
的任何组是否存在于定义的gorup'A,B,C'中。因此,如果任何项目发生了影响,那么它就会进行验证答案 0 :(得分: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
& property2
针对NotBlank
约束。
但是在打电话时,
$this->validator->validate($object, groups={"A", "B"})
仅限property1
& {0}再次验证property3
,因为未调用group C
。
答案 1 :(得分:1)
Symfony列出了组F, A, C
中的所有约束,并将其应用于您的数据。如果约束属于2个或更多组,则只应用一次。
因此,关于您的示例,应该应用$ description字段中的NotBlank约束。