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