长度
验证给定的字符串长度是否在某个最小值和最大值之间。
适用于 | 属性或方法 |
类 | 长度 |
验证器 | LengthValidator |
基本用法
要验证类的 firstName
字段长度是否在 2
和 50
之间,你可以添加以下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
// src/Entity/Participant.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Participant
{
#[Assert\Length(
min: 2,
max: 50,
minMessage: 'Your first name must be at least {{ limit }} characters long',
maxMessage: 'Your first name cannot be longer than {{ limit }} characters',
)]
protected string $firstName;
}
注意
与其他大多数约束一样,null
被认为是有效值。这是为了允许使用可选值。如果该值是强制性的,一个常见的解决方案是将此约束与 NotNull 结合使用。
选项
charsetMessage
类型: string
默认值: 此值与预期的 {{ charset }} 字符集不匹配。
如果该值未使用给定的 charset,则会显示此消息。
你可以在此消息中使用以下参数
参数 | 描述 |
---|---|
{{ charset }} |
预期的字符集 |
{{ value }} |
当前的(无效)值 |
countUnit
类型: string
默认值: Length::COUNT_CODEPOINTS
用于长度检查的字符计数单位。默认情况下,使用 mb_strlen,它计算 Unicode 代码点。
可以是 Length 类的以下常量之一
COUNT_BYTES
: 使用 strlen 计算字符串的字节长度。COUNT_CODEPOINTS
: 使用 mb_strlen 计算字符串的 Unicode 代码点长度。这是 Symfony 6.2 之前的唯一行为,并且是 Symfony 6.3 以来的默认行为。简单(多字节)Unicode 字符算作 1 个字符,而例如由表情符号组成的 ZWJ 序列算作多个字符。COUNT_GRAPHEMES
: 使用 grapheme_strlen 计算字符串的字形长度,即,即使是表情符号和由表情符号组成的 ZWJ 序列也算作 1 个字符。
exactly
类型: integer
此选项是确切的长度值。如果给定值的长度不完全等于此值,则验证将失败。
注意
当使用 Length 约束而未向其传递任何命名参数时,此选项是默认设置的选项。这意味着例如,#[Assert\Length(20)]
和 #[Assert\Length(exactly: 20)]
是等效的。
exactMessage
类型: string
默认值: 此值应恰好有 {{ limit }} 个字符。
如果 min 和 max 值相等,并且基础值的长度不完全等于此值,则会显示此消息。
你可以在此消息中使用以下参数
参数 | 描述 |
---|---|
{{ limit }} |
确切的预期长度 |
{{ value }} |
当前的(无效)值 |
{{ value_length }} |
当前值的长度 |
maxMessage
类型: string
默认值: 此值太长。它应该最多有 {{ limit }} 个字符。
如果基础值的长度超过 max 选项,则会显示此消息。
你可以在此消息中使用以下参数
参数 | 描述 |
---|---|
{{ limit }} |
预期的最大长度 |
{{ value }} |
当前的(无效)值 |
{{ value_length }} |
当前值的长度 |
min
类型: integer
此选项是“min”长度值。如果给定值的长度小于此最小值,则验证将失败。
当未定义 max
选项时,此选项是必需的。
重要的是要注意,无论约束是否要求最小长度,null
值都被认为是有效的。验证器仅在值不是 null
时触发。
minMessage
类型: string
默认值: 此值太短。它应该至少有 {{ limit }} 个字符。
如果基础值的长度小于 min 选项,则会显示此消息。
你可以在此消息中使用以下参数
参数 | 描述 |
---|---|
{{ limit }} |
预期的最小长度 |
{{ value }} |
当前的(无效)值 |
{{ value_length }} |
当前值的长度 |
normalizer
类型: 一个 PHP 可调用对象 默认值: null
此选项允许定义在检查给定值是否有效之前应用于该值的 PHP 可调用对象。
例如,你可能想要传递 'trim'
字符串以应用 trim PHP 函数,以便在验证期间忽略前导和尾随空格。