Range

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

Range

Валідує, що задане число обʼєкта DateTime знаходиться між якимось мінімумом та максимумом.

????????????? ?? ??????????? ??? ??????
???? Range
????????? RangeValidator

Базове застосування

Щоб перевірити, що поле класу height знаходиться між 120 та 180, ви можете додати наступне:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// src/Entity/Participant.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Participant
{
    #[Assert\Range(
        min: 120,
        max: 180,
        notInRangeMessage: 'You must be between {{ min }}cm and {{ max }}cm tall to enter',
    )]
    protected int $height;
}

Діапазони дат

Це обмеження може бути використано, щоб порівняти обʼєкти DateTime з будь-яким діапазоном дат. Мінімальна та максимальна дати діапазону маються бути задані як
будь-який рядок дати, прийнятий конструктором DateTime. Наприклад, ви можете перевірити, що дата знаходиться у поточному році, таким чином:

1
2
3
4
5
6
7
8
9
10
11
12
13
// src/Entity/Event.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Event
{
    #[Assert\Range(
        min: 'first day of January',
        max: 'first day of January next year',
    )]
    protected \DateTimeInterface $startDate;
}

Майте на увазі, що PHP використає сконфігурований сервером часовий пояс, щоб інтерпретувати ці дати. Якщо ви хочете зафіксувати часовий пояс, додайте його до рядку дати:

1
2
3
4
5
6
7
8
9
10
11
12
13
// src/Entity/Event.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Event
{
    #[Assert\Range(
        min: 'first day of January UTC',
        max: 'first day of January next year UTC',
    )]
    protected \DateTimeInterface $startDate;
}

Клас DateTime також приймає відносні дати або час. Наприклад, ви можете перевірити, що дата доставки починається протягом 5 годин, таким чином:

1
2
3
4
5
6
7
8
9
10
11
12
13
// src/Entity/Order.php
namespace App\Entity;

use Symfony\Component\Validator\Constraints as Assert;

class Order
{
    #[Assert\Range(
        min: 'now',
        max: '+5 hours',
    )]
    protected \DateTimeInterface $deliveryDate;
}

Опції

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

groups

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

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

invalidDateTimeMessage

тип: string за замовчуванням: Це значення має бути влідним числом.

Повідомлення, відображене, якщо значення min та max є датою та часом PHP, а задане значення - ні.

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

???????? ????
{{ value }} ??????? (?????????) ????????

invalidMessage

type: string за замовчуванням: Це значення має бути валідним числом.

Повідомлення, відобпражене, якщо значення min та max числові (відповідно до PHP-функції is_numeric), а задане значення - ні.

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

???????? ????
{{ value }} ??????? (?????????) ????????
{{ label }} ??????????? ????? ???? ?????

max

type: number або string (формат дати)

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

maxMessage

тип: string за замовчуванням: Це значення має бути {{ limit }} або менше.

Повідомлення, яке буде відображено, якщо вихідне значення більше за опцію max, а опцію min не було визначнено (якщо визначено обидві, використайте notInRangeMessage).

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

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

maxPropertyPath

тип: string

Визначає властивість обʼєкта, чиє значення використовується як опція max.

Наприклад, якщо ви хочете порівняти властивість $submittedDate якогось обʼєкта по відношенню до властивості $deadline того ж обʼєкта, використайте maxPropertyPath="deadline" у діапазоні обмежень $submittedDate.

Tip

При використанні цієї опції, значення доступне у повідомленні помилки як заповнювач {{ max_limit_path }}. Хоча воно не призначене для відображення у повідомленні помилки кінцевим користувачам, воно корисне при використанні API для виконання будь-якої логіки на стороні клієнта.

min

тип: number або string (формат дати)

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

minMessage

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

Повідомлення, яке буде відображено, якщо вихідне значення менше ніж опція min, а опцію max не було визначнено (якщо визначено обидві, використайте notInRangeMessage).

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

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

minPropertyPath

тип: string

Визначає властивість обʼєкта, чиє значення використовується як опція min.

Наприклад, якщо ви хочете порівняти властивість $endDate якогось обʼєкта по відношенню до властивості $startDate того ж обʼєкта, використайте maxPropertyPath="startDate" у діапазоні обмежень $endDate.

Tip

При використанні цієї опції, значення доступне у повідомленні помилки як заповнювач {{ min_limit_path }}. Хоча воно не призначене для відображення у повідомленні помилки кінцевим користувачам, воно корисне при використанні API для виконання будь-якої логіки на стороні клієнта.

notInRangeMessage

тип: string за замовчуванням: Це значення має бути між {{ min }} та {{ max }}.

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

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

???????? ????
{{ max }} ?????? ????
{{ min }} ????? ????
{{ value }} ??????? (?????????) ????????

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

payload

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

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

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