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

编辑该页面

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

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

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

  • 属性
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/ / src /实体/ User.php名称空间应用程序\实体;使用ob娱乐下载\组件\安全\核心\用户\用户界面;使用ob娱乐下载\组件\验证器\约束作为断言;用户实现了用户界面{#[断言\电子邮件(组:['注册'])]私人美元电子邮件;#[断言\ NotBlank(组:['注册'])]#[断言\长度(分钟:7组:['注册']))私人美元密码;#(断言\长度(分钟:2))私人美元城市;}

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

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

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

谨慎

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

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

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

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

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

1
美元错误=美元验证器- >validate (美元作者,,(“注册”]);

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

在一个完整的堆栈Symfony项ob娱乐下载目中,您通常会使用验证间接通过表单库。信息如何使用验证组内部形式,明白了如何定义验证组使用

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
ob娱乐下载Symfony 6.2支持通过苏禄人
ob娱乐下载Symfony 6.2支持通过Les-Tilleuls.coop