跳到内容

Valid

编辑此页

此约束用于在作为属性嵌入到被验证对象中的对象上启用验证。这允许您验证一个对象及其所有相关的子对象。

应用于 属性或方法
Valid

提示

默认情况下,collection Field Typeerror_bubbling 选项是启用的,它会将错误传递给父表单。如果您想将错误附加到它们实际发生的位置,您必须将 error_bubbling 设置为 false

基本用法

在以下示例中,创建两个类 AuthorAddress,它们都在其属性上具有约束。此外,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,则将验证所有包含的值。此选项在数组上被忽略:在任何情况下都会遍历数组。键不会被验证。

本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可获得许可。
目录
    版本