类型
验证一个值是否为特定的数据类型。例如,如果一个变量应该是数组,你可以使用此约束和 array
类型选项来验证这一点。
适用于 | 属性或方法 |
类 | 类型 |
验证器 | TypeValidator |
基本用法
此约束应应用于无类型变量/属性。如果属性或变量是类型化的,并且你传递了不同类型的值,PHP 将在此约束被检查之前抛出异常。
以下示例检查 emailAddress
是否为 Symfony\Component\Mime\Address
的实例,firstName
是否为 string
类型(使用 is_string PHP 函数),age
是否为 integer
类型(使用 is_int PHP 函数),以及 accessCode
是否仅包含字母或仅包含数字(使用 ctype_alpha 和 ctype_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 结合使用。
选项
message
type: string
default: 此值应为 {{ type }} 类型。
如果底层数据不是给定类型,则显示此消息。
你可以在此消息中使用以下参数
参数 | 描述 |
---|---|
{{ type }} |
期望的类型 |
{{ value }} |
当前的(无效)值 |
{{ label }} |
相应的表单字段标签 |
payload
type: mixed
default: null
此选项可用于将任意特定于域的数据附加到约束。配置的 payload 不会被 Validator 组件使用,但其处理完全取决于你。
例如,你可能想使用 多个错误级别,以便在前台根据错误的严重程度以不同方式呈现失败的约束。
type
type: string
或 array
[默认选项]
此必需选项定义了给定值允许的类型或类型集合。每种类型可以是某些 PHP 类/接口的 FQCN(完全限定类名),也可以是有效的 PHP 数据类型(由 PHP 的 is_()
函数检查)
- bool
- boolean
- int
- integer
- long
- float
- double
- real
- numeric
- string
- scalar
- array
- iterable
- countable
- callable
- object
- resource
- null
如果你正在处理数组,你可以在约束中使用以下类型
list
,它在内部使用 array_is_listassociative_array
,对于任何非空且不是列表的数组,此类型都为真
此外,你可以使用来自相应 内置 PHP 扩展 的 ctype_*()
函数。请参考 ctype 函数列表
请确保在使用其中一个之前设置了正确的 locale。
7.1
list
和 associative_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