跳到内容

长度

编辑此页

验证给定的字符串长度是否在某个最小值和最大值之间

适用于 属性或方法
长度
验证器 LengthValidator

基本用法

要验证类的 firstName 字段长度是否在 250 之间,你可以添加以下内容

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 结合使用。

选项

charset

类型: string 默认值: UTF-8

使用 mb_check_encodingmb_strlen PHP 函数计算值长度时要使用的字符集。

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 }} 当前值的长度

groups

类型: array | string 默认值: null

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

max

类型: integer

此选项是“max”长度值。如果给定值的长度大于此最大值,则验证将失败。

当未定义 min 选项时,此选项是必需的。

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 函数,以便在验证期间忽略前导和尾随空格。

payload

类型: mixed 默认值: null

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

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

本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。
目录
    版本