集合
编辑本页集合
当底层数据是一个集合(即数组或实现的对象)时,使用此约束可否认的
而且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_email
或short_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
选项要求所有组中的字段。当验证时联系
组,美元的名字
可以为空,但仍然需要密钥。如果这不是预期的行为,请使用可选
显式约束,而不是要求
.
选项
allowMissingFields
类型:布尔
默认的:假
如果此选项设置为假
的一个或多个字段字段选项不存在于基础集合中,则将返回验证错误。如果设置为真正的
,如果某些字段在字段选项在基础集合中不存在。
extraFieldsMessage
类型:字符串
默认的:这个领域是没有预料到的。
如果显示的消息allowExtraFields为false,检测到一个额外的字段。
您可以在此消息中使用以下参数:
参数 | 描述 |
---|---|
{{field}} |
检测到的额外字段的键 |
missingFieldsMessage
类型:字符串
默认的:该字段缺失。
如果显示的消息allowMissingFields为false,且基础集合中缺少一个或多个字段。
您可以在此消息中使用以下参数:
参数 | 描述 |
---|---|
{{field}} |
中定义的缺失字段的键字段 |