Length

Дата оновлення перекладу 2024-05-29

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

Дата оновлення перекладу 2022-12-20

Note

Як і у більшості інших обмежень, null вважається валідним значенням. Це для того, щоб дозволити використання опціональних значень. Якщо значення є обовʼязковим, розповсюдженим рішенням буде комбінація цього обмеження з
NotNull.

Опції

charset

тип: string за замовчуванням: UTF-8

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

charsetMessage

тип: string за замовчуванням: Це значення не співпадає з очікуваним набором символів {{ 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

Ця опція - це точна довжина значення. Валідація зазнає невдачі, якщо довжина заданого значення точно не дорівнює цьому значенню.

Note

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

exactMessage

тип: string за замовчуванням: Це значення повинно мати рівно {{ limit }} символів.

Повідомлення, відображене, якщо мінімальне та максимальне значення рівні, а довжина значення, що лежить в основі, не дорівнює цьому значенню.

Ви можете використати наступні параметри у цьому повідомленні:

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

Дата оновлення перекладу 2023-09-24

groups

тип: array | string за замовчуванням: null

Визначає групу або групи валідації обмеження. Прочитайте більше про групи валідації.

max

тип: integer

Ця обовʼязкова опція - це значення довжини "max". Валідація буде невдалою, якщо довжина заданого значення більше, ніж це мінімальне значення.

Ця опція обовʼязкова, коли опція min не визначена.

maxMessage

тип: string за замовчуванням: Це значення занадто довге. Воно повинно мати {{ limit }} або менше символів.

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

Ви можете використати наступні параметри у цьому повідомленні:

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

min

тип: integer

Ця обовʼязкова опція - це значення довжини "min". Валідація буде невдалою, якщо довжина заданого значення менша, ніж це мінімальне значення.

Ця опція обовʼязкова, коли опція max не визначена.

Важливо відмітити, що значення NULL та порожні рядки все одно вважаються валідними, навіть якщо обмеження вимагало мінімальної довжини. Валідатори запускаються лише якщо значення не порожнє.

minMessage

тип: string за замовчуванням: Це значення занадто коротке. Воно повинно мати {{ limit }} або більше символів.

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

Ви можете використати наступні параметри у цьому повідомленні:

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

Дата оновлення перекладу 2022-12-20

normalizer

тип: PHP-викличне за замовчуванням: null

Ця опція дозволяє вам визначати PHP-викличне, застосоване до заданого значення до перевірки, чи є воно валідним.

Наприклад, ви можете захотіти передати рядок 'trim' для застосування PHP-функції trim, щоб ігнорувати початкові та замикаючі пробіли під час валідації.

Дата оновлення перекладу 2024-05-29

payload

тип: mixed за замовчуванням: null

Ця опція може бути використана, щоб додати довільні дані, специфічні для домену, до обмеження. Сконфігуроване корисне навантаження не використовується компонентом Validator, але його обробка повністю залежить від вас.

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