集合

编辑该页面

集合

这个约束时使用底层数据是一组(即数组或对象实现可否认的ArrayAccess),但你想以不同的方式验证不同的键的集合。例如,您可以验证电子邮件主要使用电子邮件约束和库存键的集合范围约束。

这个约束也可以确保存在某些收集钥匙和额外的密钥不存在。

另请参阅

如果你想验证的所有元素的集合是独一无二的使用唯一约束

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

基本用法

集合约束允许你单独验证不同键的集合。下面的例子:

1 2 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25日26日
/ / src /实体/ Author.php名称空间应用程序\实体;使用ob娱乐下载\组件\验证器\约束作为断言;/ /重要:嵌套属性需要PHP 8.1或更高版本作者{#[断言\收集(字段:[“personal_email”= >维护\电子邮件,“short_bio”= > [维护\ NotBlank,维护\长度(马克斯:One hundred.maxMessage:“你的简历太长!”)]],allowMissingFields:真正的,)受保护的美元profileData= (“personal_email”= >“……”,“short_bio”= >“……”,);}

存在和缺乏字段

默认情况下,这个约束验证超过单个字段是否通过分配约束集合。事实上,如果集合的任何钥匙丢失或如果有任何识别键的集合,就会抛出验证错误。

如果你想允许键缺席集合或如果你想“额外”键可以在集合,您可以修改allowMissingFieldsallowExtraFields分别选择。在上面的例子中,allowMissingFields选项被设置为true,这意味着如果的personal_emailshort_bio失踪的元素personalData美元财产,没有会发生验证错误。

必需和可选字段约束

约束内字段可以用集合要求可选约束来控制是否应该被应用(要求)或只适用于该领域的存在(可选)。

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

  • 属性
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ / src /实体/ Author.php名称空间应用程序\实体;使用ob娱乐下载\组件\验证器\约束作为断言;作者{#[断言\收集(字段:[“personal_email”= >维护\要求([维护\ NotBlank,维护\电子邮件,),“alternate_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 ([“组织”= >“接触”)))));

这将导致以下配置:

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

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

选项

allowExtraFields

类型:布尔默认的:假

如果将此选项设置和底层集合包含一个或多个元素,不包括在内字段选项,将返回一个验证错误。如果设置为真正的,额外的字段是好的。

allowMissingFields

类型:布尔默认的:假

如果将此选项设置和一个或多个字段字段选项不存在在底层集合,将返回一个验证错误。如果设置为真正的如果一些字段字段选项不存在在底层集合。

extraFieldsMessage

类型:字符串默认的:这个领域是出乎意料的时候。

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

在这个信息:您可以使用以下参数

参数 描述
{{领域}} 额外的现场检测的关键

字段

类型:数组(默认的选项]

这个选项是必需的和是一个关联数组中定义的所有键的集合,对于每一个关键,应该执行哪些验证器(s)对该元素的集合。

类型:数组|字符串

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

missingFieldsMessage

类型:字符串默认的:这个字段是失踪。

如果显示的消息allowMissingFields是假的,缺少一个或多个字段从底层集合。

在这个信息:您可以使用以下参数

参数 描述
{{领域}} 失踪的字段中定义的关键字段

有效载荷

类型:混合默认的:

这个选项可以用来连接任意特定领域的数据约束。配置的有效载荷不使用验证器组件,但是它的处理是完全取决于你。

例如,您可能想要使用几个错误级别以不同的方式来呈现没有约束,在前端取决于错误的严重性。

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