跳到主要內容

有效

編輯此頁面

此約束條件用於啟用對象驗證,這些對象作為屬性嵌入在正在驗證的對象上。這允許您驗證對象及其所有相關的子對象。

適用於 屬性或方法
類別 有效

提示

預設情況下,`error_bubbling` 選項對於 collection 欄位類型是啟用的,這會將錯誤傳遞給父表單。如果您想將錯誤附加到它們實際發生的位置,您必須將 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 約束條件

選項

群組

類型: array | string 預設值: null

它定義此約束條件的驗證群組。閱讀更多關於驗證群組的資訊。

注意

與其他約束條件不同,Valid 約束條件不使用 Default 群組。這表示即使您在呼叫驗證器時指定群組,它也始終預設套用。如果您想將約束條件限制為群組的子集,則必須定義 groups 選項。

酬載

類型: mixed 預設值: null

此選項可用於將任意領域特定的資料附加到約束條件。配置的酬載不會被 Validator 組件使用,但其處理完全取決於您。

例如,您可能想使用多個錯誤級別,以便根據錯誤的嚴重程度在前端以不同方式呈現失敗的約束條件。

遍歷

類型: boolean 預設值: true

如果此約束條件應用於 \Traversable,則當此選項設定為 true 時,將驗證所有包含的值。此選項在陣列上會被忽略:無論如何都會遍歷陣列。鍵不會被驗證。

本作品,包括程式碼範例,根據 Creative Commons BY-SA 3.0 授權條款授權。
目錄
    版本