Sequentially

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

Sequentially

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

Як альтернативу для ситуацій, які не може вирішити Sequentially, ви можете розглянути використання GroupSequence, яке надає більше контролю.

????????????? ?? ??????????? ??? ??????
???? Sequentially
????????? SequentiallyValidator

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

Уявіть, що у вас є обʼєкт Place із властивістю $address, яка має відповідати з наступним вимогам:

  • не порожній рядок
  • має як мінімум 10 символів
  • з конкретним форматом
  • може бути геолокалізовано з використанням зовнішнього сервісу

У таких ситуаціях, ви можете зіштовхнутися з трьома проблемами:

  • обмеження Length або Regex можуть зазнати невдачі з обмеженням UnexpectedValueException, якщо реальне значення нне є рядком, як вимагається Type.
  • ви можете отримати багато повідомлень помилок для однієї властивості.
  • ви можете виконати марний та важкий зовнішній виклик, щоб геолокалізувати адресу, в той час як формат не є валідним.

Ви можете валідувати кожне з цих обмежень послідовно, щоб вирішити ці проблеми:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// src/Localization/Place.php
namespace App\Localization;

use App\Validator\Constraints as AcmeAssert;
use Symfony\Component\Validator\Constraints as Assert;

class Place
{
    #[Assert\Sequentially([
        new Assert\NotNull,
        new Assert\Type('string'),
        new Assert\Length(min: 10),
        new Assert\Regex(Place::ADDRESS_REGEX),
        new AcmeAssert\Geolocalizable,
    ])]
    public string $address;
}

Опції

constraints

тип: array [опція за замовчуванням ]

Ця обовʼязкова опція є масивом обмежень валідації, які ви хочете застосувати послідовно.

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

groups

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

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

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

payload

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

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

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