有效
此約束條件用於啟用對象驗證,這些對象作為屬性嵌入在正在驗證的對象上。這允許您驗證對象及其所有相關的子對象。
提示
預設情況下,`error_bubbling` 選項對於 collection 欄位類型是啟用的,這會將錯誤傳遞給父表單。如果您想將錯誤附加到它們實際發生的位置,您必須將 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 約束條件。
選項
群組
類型: array
| string
預設值: null
它定義此約束條件的驗證群組。閱讀更多關於驗證群組的資訊。
注意
與其他約束條件不同,Valid
約束條件不使用 Default
群組。這表示即使您在呼叫驗證器時指定群組,它也始終預設套用。如果您想將約束條件限制為群組的子集,則必須定義 groups
選項。
酬載
類型: mixed
預設值: null
此選項可用於將任意領域特定的資料附加到約束條件。配置的酬載不會被 Validator 組件使用,但其處理完全取決於您。
例如,您可能想使用多個錯誤級別,以便根據錯誤的嚴重程度在前端以不同方式呈現失敗的約束條件。
遍歷
類型: boolean
預設值: true
如果此約束條件應用於 \Traversable
,則當此選項設定為 true
時,將驗證所有包含的值。此選項在陣列上會被忽略:無論如何都會遍歷陣列。鍵不會被驗證。