Length

Дата обновления перевода 2023-09-25

Length

Валидирует, что длина заданной строки находится между некоторым минимальным и максимальным значением.

??????????? ? ???????? ??? ??????
????? Length
????????? 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;
}

Note

As with most of the other constraints, null is considered a valid value. This is to allow the use of optional values. If the value is mandatory, a common solution is to combine this constraint with NotNull.

Опции

charset

тип: string по умолчанию: UTF-8

Набор символов, который будет использовать при вычислении длины значения с PHP-функциями mb_check_encoding и mb_strlen.

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 символ.

6.3

Опция countUnit была представлена в Symfony 6.3.

exactly

тип: integer

Эта опция - это точное значение длины. Валидация будет неуспешной, если длина заданного значения точно не совпадает с этим значением.

Note

Эта опция устанавливается по умолчанию при использовании ограничения Length без передачи ему какого-либо именованного аргумента. Это означает, что, например, #[Assert\Length(20)] и #[Assert\Length(exactly: 20)] эквивалентны.

exactMessage

тип: string по умолчанию: Это значение должно иметь ровно {{ limit }} символов.

Сообщение, отображаемое, если минимальное и максимальное значения равны, а длина основоположного значения не равняется точно этому значению.

Вы можете использовать следующие параметры в этом сообщении:

???????? ????????
{{ limit }} ?????? ????????? ?????
{{ value }} ??????? (??????????) ????????
{{ value_length }} ??????? ????? ????????

6.3

Параметр `{{ value_length }}` был представлен в Symfony 6.3.

groups

type: array | string default: null

It defines the validation group or groups of this constraint. Read more about validation groups.

max

тип: integer

Эта опция - это значение максимальной длины. Валидация будет неудачной, если длина заданного значения больше, чем это минимальное значение.

This option is required when the min option is not defined.

maxMessage

тип: string по умолчанию: Это значение слишком длинное. Оно должно иметь {{ limit }} или меньше символов.

Сообщение, отображаемое, если длина основоположного значения больше, чем опция max.

Вы можете использовать следующие параметры в этом сообщении:

???????? ????????
{{ limit }} ?????? ????????? ?????
{{ value }} ??????? (??????????) ????????
{{ value_length }} ??????? ????? ????????

6.3

Параметр `{{ value_length }}` был представлен в Symfony 6.3.

min

тип: integer

Эта опция - это значение минимальной длины. Валидация будет неудачной, если длина заданного значения меньше, чем это минимальное значение.

This option is required when the max option is not defined.

Важно отметить, что значения null и пустые строки считаются всё равно валидными, даже если ограничение требовало минимальную длину. Валидаторы запускаются только если значение не null.

minMessage

тип: string по умолчанию: Это значение слишком короткое. Оно должно иметь {{ limit }} или больше символов.

Сообщение, отображаемое, если длина основоположного значеия меньше, чем опция min.

Вы можете использовать следующие параметры в этом сообщении:

???????? ????????
{{ limit }} ?????? ????????? ?????
{{ value }} ??????? (??????????) ????????
{{ value_length }} ??????? ????? ????????

6.3

Параметр `{{ value_length }}` был представлен в Symfony 6.3.

normalizer

type: a PHP callable default: null

This option allows to define the PHP callable applied to the given value before checking if it is valid.

For example, you may want to pass the 'trim' string to apply the trim PHP function in order to ignore leading and trailing whitespace during validation.

payload

тип: mixed по умолчанию: null

Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.

Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.