跳到内容

类型

编辑此页

验证一个值是否为特定的数据类型。例如,如果一个变量应该是数组,你可以使用此约束和 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

type: array | string default: null

它定义了此约束的验证组。阅读更多关于 验证组 的信息。

message

type: string default: 此值应为 {{ type }} 类型。

如果底层数据不是给定类型,则显示此消息。

你可以在此消息中使用以下参数

参数 描述
{{ type }} 期望的类型
{{ value }} 当前的(无效)值
{{ label }} 相应的表单字段标签

payload

type: mixed default: null

此选项可用于将任意特定于域的数据附加到约束。配置的 payload 不会被 Validator 组件使用,但其处理完全取决于你。

例如,你可能想使用 多个错误级别,以便在前台根据错误的严重程度以不同方式呈现失败的约束。

type

type: stringarray [默认选项]

此必需选项定义了给定值允许的类型或类型集合。每种类型可以是某些 PHP 类/接口的 FQCN(完全限定类名),也可以是有效的 PHP 数据类型(由 PHP 的 is_() 函数检查)

如果你正在处理数组,你可以在约束中使用以下类型

  • list,它在内部使用 array_is_list
  • associative_array,对于任何非空且不是列表的数组,此类型都为真

此外,你可以使用来自相应 内置 PHP 扩展ctype_*() 函数。请参考 ctype 函数列表

请确保在使用其中一个之前设置了正确的 locale

7.1

listassociative_array 类型在 Symfony 7.1 中引入。

最后,你可以使用聚合函数

  • number: is_int || is_float && !is_nan
  • finite-float: is_float && is_finite
  • finite-number: is_int || is_float && is_finite
这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。
TOC
    版本