symfony组验证如何工作

时间:2014-01-06 04:13:37

标签: php validation 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'中。因此,如果任何项目发生了影响,那么它就会进行验证

2 个答案:

答案 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约束。