跳到內容

類型

編輯此頁

驗證值是否為特定的資料類型。例如,如果變數應該是陣列,您可以搭配 array 類型選項使用此約束條件來驗證。

適用於 屬性或方法
類別 類型
驗證器 TypeValidator

基本用法

此約束條件應適用於未輸入類型的變數/屬性。如果屬性或變數已輸入類型,且您傳遞不同類型的值,PHP 將在檢查此約束條件之前擲出例外。

以下範例檢查 emailAddress 是否為 Symfony\Component\Mime\Address 的實例,firstName 是否為 string 類型(使用 is_string PHP 函數),age 是否為 integer(使用 is_int PHP 函數),以及 accessCode 是否僅包含字母或僅包含數字(使用 ctype_alphactype_digit PHP 函數)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// src/Entity/Author.php
namespace App\Entity;

use Symfony\Component\Mime\Address;
use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    #[Assert\Type(Address::class)]
    protected $emailAddress;

    #[Assert\Type('string')]
    protected $firstName;

    #[Assert\Type(
        type: 'integer',
        message: 'The value {{ value }} is not a valid {{ type }}.',
    )]
    protected $age;

    #[Assert\Type(type: ['alpha', 'digit'])]
    protected $accessCode;
}

注意

與大多數其他約束條件一樣,null 被視為有效值。這是為了允許使用選填值。如果值是必填的,常見的解決方案是將此約束條件與 NotNull 結合使用。

選項

群組 (groups)

類型array | string 預設值null

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

訊息 (message)

類型string 預設值此值應為 {{ type }} 類型。

當底層資料不是給定類型時顯示的訊息。

您可以在此訊息中使用以下參數

參數 描述
{{ type }} 預期的類型
{{ value }} 當前(無效)值
{{ label }} 對應的表單欄位標籤

酬載 (payload)

類型mixed 預設值null

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

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

類型 (type)

類型stringarray [預設選項]

此必要選項定義給定值允許的類型或類型集合。每個類型可以是某些 PHP 類別/介面的 FQCN(完全限定類別名稱),或是有效的 PHP 資料類型(由 PHP 的 is_() 函數檢查)

如果您正在處理陣列,您可以在約束條件中使用以下類型

  • list,它在內部使用 array_is_list
  • associative_array,對於任何非空且非列表的陣列為真

此外,您可以使用對應的 內建 PHP 擴充功能中的 ctype_*() 函數。請參閱 ctype 函數列表

請確保在使用其中一個之前已設定正確的 locale

7.1

listassociative_array 類型是在 Symfony 7.1 中引入的。

最後,您可以使用聚合函數

  • numberis_int || is_float && !is_nan
  • finite-floatis_float && is_finite
  • finite-numberis_int || is_float && is_finite
本作品,包括程式碼範例,依據 Creative Commons BY-SA 3.0 授權條款發布。
目錄
    版本