如何应用只有一个子集的验证约束(验证组)

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.7,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何应用只有一个子集的验证约束(验证组)

默认情况下,当验证对象将要检查所有约束这个类的是否通过。然而,在某些情况下,您将需要验证对只有一个对象一些限制这类。要做到这一点,你可以每个约束组织成一个或多个“验证组”,然后应用验证对一组约束。

例如,假设您有一个用户类,它是用于当用户注册和当一个用户更新他们的联系信息后:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24
/ / src / AppBundle /实体/ User.php名称空间AppBundle\实体;使用ob娱乐下载\组件\安全\核心\用户\用户界面;使用ob娱乐下载\组件\验证器\约束作为断言;用户实现了用户界面{/ * * *@Assert\电子邮件(组={}“注册”)* /私人美元电子邮件;/ * * *@Assert\ NotBlank(组={}“注册”)*@Assert\长度(min = 7、组={}“注册”)* /私人美元密码;/ * * *@Assert\ (min = 2)长度* /私人美元城市;}

在这个配置中,有三个验证组:

默认的
包含当前类的约束和所有引用的类,属于没有其他组。
用户
相当于所有约束用户对象默认的组。这是总类的名称。这之间的区别默认的在解释如何按顺序应用验证组吗
登记
包含了限制电子邮件密码字段。

约束的默认的群一个类是要么没有明确的约束组配置或配置为一组等于类名或字符串默认的

谨慎

当验证只是用户对象,没有区别默认的组和用户组。但是,如果是有区别的用户已嵌入的对象。例如,假设用户有一个地址属性包含了一些地址对象,你已经添加了有效的约束这个属性,以便验证时验证用户对象。

如果你验证用户使用默认的组,然后任何限制地址类的默认的集团被使用。但是,如果你验证用户使用用户验证组,然后只限制地址类的用户集团将进行验证。

换句话说,默认的组和类名(如组。用户)是相同的,除非类是嵌套在另一个对象,实际上是被认可的。

如果你有继承(如。用户扩展BaseUser),你验证与子类的类名(即。用户),然后所有的约束用户BaseUser将验证。然而,如果你确认使用基类(即。BaseUser),那么只有默认的约束BaseUser类将被验证。

告诉验证器使用一个特定的群体,通过一个或多个组名作为第三个参数validate ()方法:

1 2 3 4 5
/ /如果你使用新的2.5验证API(你可能!)美元错误=美元验证器- >validate (美元作者,,数组(“注册”));/ /如果你使用旧的2.4验证API,通过组名称作为第二个参数/ /错误=验证器- >验证美元($作者,数组(“注册”));

如果没有指定组,属于集团的所有约束默认的将被应用。

当然,你通常会使用验证间接通过表单库。信息如何使用验证组内部形式,明白了如何定义验证组使用

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。