Valid
此约束用于在作为属性嵌入到被验证对象中的对象上启用验证。这允许您验证一个对象及其所有相关的子对象。
提示
默认情况下,collection Field Type 的 error_bubbling
选项是启用的,它会将错误传递给父表单。如果您想将错误附加到它们实际发生的位置,您必须将 error_bubbling
设置为 false
。
基本用法
在以下示例中,创建两个类 Author
和 Address
,它们都在其属性上具有约束。此外,Author
在 $address
属性中存储一个 Address
实例
1 2 3 4 5 6 7 8 9
// src/Entity/Address.php
namespace App\Entity;
class Address
{
protected string $street;
protected string $zipCode;
}
1 2 3 4 5 6 7 8 9 10 11
// src/Entity/Author.php
namespace App\Entity;
class Author
{
protected string $firstName;
protected string $lastName;
protected Address $address;
}
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 27 28 29 30 31
// src/Entity/Address.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Address
{
#[Assert\NotBlank]
protected string $street;
#[Assert\NotBlank]
#[Assert\Length(max: 5)]
protected string $zipCode;
}
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
#[Assert\NotBlank]
#[Assert\Length(min: 4)]
protected string $firstName;
#[Assert\NotBlank]
protected string $lastName;
protected Address $address;
}
通过此映射,可以成功验证具有无效地址的作者。为了防止这种情况,请将 Valid
约束添加到 $address
属性。
1 2 3 4 5 6 7 8 9 10
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
#[Assert\Valid]
protected Address $address;
}
如果您现在使用无效地址验证作者,您可以看到 Address
字段的验证失败了。
1 2
App\Entity\Author.address.zipCode:
This value is too long. It should have 5 characters or less.
提示
如果您还想验证 address
属性是 App\Entity\Address
类的实例,请添加 Type constraint。
选项
groups
类型:array
| string
默认值:null
它定义了此约束的验证组。阅读更多关于 验证组 的信息。
注意
与其他约束不同,Valid
约束不使用 Default
组。这意味着即使您在调用验证器时指定组,它也始终默认应用。如果您想将约束限制为组的子集,则必须定义 groups
选项。
payload
类型:mixed
默认值:null
此选项可用于将任意特定于域的数据附加到约束。配置的有效负载不由 Validator 组件使用,但其处理完全取决于您。
例如,您可能想使用 多个错误级别,以便根据错误严重程度在前端以不同方式呈现失败的约束。
traverse
类型:boolean
默认值:true
如果此约束应用于 \Traversable
,则如果此选项设置为 true
,则将验证所有包含的值。此选项在数组上被忽略:在任何情况下都会遍历数组。键不会被验证。