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, але його обробка повністю залежить від вас.
Наприклад, ви можете захотіти використати декілька рівнів помилок, щоб представити неуспішні обмеження по-різному у фронтенді, залежно від серйозності помилки.