集合

编辑本页

集合

当底层数据是一个集合(即数组或实现的对象)时,使用此约束可否认的而且ArrayAccess),但是您希望以不同的方式验证该集合的不同键。例如,您可以验证电子邮件键使用电子邮件约束和库存属性的集合的范围约束。

这个约束还可以确保存在某些集合键,而不存在额外的键。

另请参阅

如果要验证集合中的所有元素都是惟一的,请使用唯一约束

适用于 属性或方法
集合
验证器 CollectionValidator

基本用法

集合Constraint允许您分别验证集合的不同键。举个例子:

12 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / src /实体/ Author.php名称空间应用程序实体作者受保护的profileData= (“personal_email”= >“……”“short_bio”= >“……”,);公共函数setProfileData关键价值->profileData [关键] =价值;}}

为了验证personal_email元素profileData数组属性是有效的电子邮件地址,并且short_bio元素不是空白,但长度不超过100个字符,您将执行以下操作:

  • 注释
  • 属性
  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
/ / src /实体/ Author.php名称空间应用程序实体使用ob娱乐下载组件验证器约束作为断言作者/ * * *@Assert\集合(* fields = {* "personal_email" =@Assert\Email, * "short_bio" = {*@Assert\ NotBlank *@Assert\长度(* max = 100, * maxMessage = "你的短简历太长了!"*) *} *}, * allowMissingFields = true *) */受保护的profileData= (“personal_email”= >“……”“short_bio”= >“……”,);}

5.4

#【收藏】PHP属性是在Symfony 5.4中引入的,需要PHP 8.1ob娱乐下载(增加了嵌套属性支持)。

字段的存在和不存在

默认情况下,此约束不仅验证集合中的各个字段是否通过了分配的约束。实际上,如果集合中缺少任何键,或者集合中有任何无法识别的键,就会抛出验证错误。

如果希望在集合中不存在键,或者希望在集合中允许“额外”键,则可以修改allowMissingFields而且allowExtraFields分别选择。在上面的例子中,allowMissingFields选项设置为true,这意味着如果personal_emailshort_bio元素从personalData美元属性,则不会发生验证错误。

必选和可选字段约束

集合中字段的约束可以包装在要求可选约束来控制是否始终应用它们(要求)或仅在该字段存在时应用(可选).

例如,如果您想要求personal_email字段profileData数组不是空的,并且是有效的电子邮件,但是alternate_email字段是可选的,但必须是有效的电子邮件,如果提供,您可以执行以下操作:

  • 注释
  • 属性
  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /实体/ Author.php名称空间应用程序实体使用ob娱乐下载组件验证器约束作为断言作者/ * * *@Assert\集合(* fields={* "personal_email" =@Assert所需({\@Assert\ NotBlank,@Assert\Email}), * "alternate_email" =@Assert、可选的(@Assert\Email) *} *) */受保护的profileData= (“personal_email”= >“email@example.com”];}

即使没有allowMissingFields属性设置为true时,现在可以省略alternate_email属性完全来自profileData数组,因为它是可选.然而,如果personal_email字段在数组中不存在,则NotBlank约束仍然会被应用(因为它被封装在要求),您将收到一个约束违反。

在嵌套约束中定义组时,它们将自动添加到集合约束本身,以便可以遍历所有嵌套组。举个例子:

1 2 3 4 5 6 7 8
使用ob娱乐下载组件验证器约束作为断言约束维护\集合([“字段”= > [“名字”= >维护\ NotBlank ([“组织”= >“基本”]),“电子邮件”= >维护\ NotBlank ([“组织”= >“接触”]),],]);

这将导致以下配置:

12 3 4 5 6 7 8 9 10 11 12 13
约束维护\集合([“字段”= > [“名字”= >维护\要求([“约束”= >维护\ NotBlank ([“组织”= >“基本”]),“组织”= > [“基本”“严格的”),),“电子邮件”= >维护\要求([“约束”= >维护\ NotBlank ([“组织”= >“接触”]),“组织”= > [“基本”“严格的”],]),],“组织”= > [“基本”“严格的”)));

默认的allowMissingFields选项要求所有组中的字段。当验证时联系组,美元的名字可以为空,但仍然需要密钥。如果这不是预期的行为,请使用可选显式约束,而不是要求

选项

allowExtraFields

类型:布尔默认的:假

如果此选项设置为类中未包含的一个或多个元素字段选项,将返回一个验证错误。如果设置为真正的,额外的字段是可以的。

allowMissingFields

类型:布尔默认的:假

如果此选项设置为的一个或多个字段字段选项不存在于基础集合中,则将返回验证错误。如果设置为真正的,如果某些字段在字段选项在基础集合中不存在。

extraFieldsMessage

类型:字符串默认的:这个领域是没有预料到的。

如果显示的消息allowExtraFields为false,检测到一个额外的字段。

您可以在此消息中使用以下参数:

参数 描述
{{field}} 检测到的额外字段的键

字段

类型:数组默认的选项

此选项是必需的,它是一个关联数组,定义集合中的所有键,并且对于每个键,确切地说应该对集合中的该元素执行哪个验证器。

类型:数组|字符串

它定义了这个约束的一个或多个验证组。阅读更多验证组

missingFieldsMessage

类型:字符串默认的:该字段缺失。

如果显示的消息allowMissingFields为false,且基础集合中缺少一个或多个字段。

您可以在此消息中使用以下参数:

参数 描述
{{field}} 中定义的缺失字段的键字段

有效载荷

类型:混合默认的:

此选项可用于将任意特定于领域的数据附加到约束。已配置的有效负载不由Validator组件使用,但其处理完全取决于您。

例如,您可能想使用若干错误级别根据错误的严重程度,在前端以不同的方式呈现失败的约束。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
ob娱乐下载Symfony 5.4支持通过私人Packagist