Компонент Validator
Дата оновлення перекладу 2023-08-25
Компонент Validator
Компонент Validator надає інструменти для валідації значень, дотримуючись специфікації валідації JSR-303 Bean.
Установка
1
$ composer require symfony/validator
Note
Якщо ви встановлюєте цей компонент поза додатком Symfony, вам потрібно підключити
файл vendor/autoload.php
у вашому коді для включення механізму автозавантаження
класів, наданих Composer. Детальніше можна прочитати у цій статті.
Використання
See also
Ця стаття пояснює, як використовувати функції Валідатора як незалежного компонента в будь-якому додатку PHP. Прочитайте статтю Валідація для розуміння, як використовувати його у додатках Symfony.
Поведінка компонента Validator засновується на двох концепціях:
- Обмеження, які визначають правила, що потрібно валідувати;
- Валідатори, які є класами, що містять саму логіку валідації.
Наступний приклад демонструє, як валідувати так, щоб рядок був як мінімум 10 знаків у довжину:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Validation;
$validator = Validation::createValidator();
$violations = $validator->validate('Bernhard', [
new Length(['min' => 10]),
new NotBlank(),
]);
if (0 !== count($violations)) {
// є помилки, тепер ви можете їх відобразити
foreach ($violations as $violation) {
echo $violation->getMessage().'<br>';
}
}
Метод validate()
повертає список порушень в якості обʼєкту, що реалізує
ConstraintViolationListInterface.
Якщо у вас багато помилок валідації, ви можете відфільтрувати їх за кодом помилки:
1 2 3 4 5 6
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
$violations = $validator->validate(/* ... */);
if (0 !== count($violations->findByCodes(UniqueEntity::NOT_UNIQUE_ERROR))) {
// розібратися з цією конкретною помилкою (вивести якесь повідомлення, відправити листа і т.д.)
}
Вилучення екземпляра валідатора
Обʼєкт Validator (який реалізує ValidatorInterface) - це головна точка доступу компонента Validator. Щоб створити новий екземпляр цього класу, рекомендується використовувати клас Validation :
1 2 3
use Symfony\Component\Validator\Validation;
$validator = Validation::createValidator();
Цей обʼєкт $validator
може валідувати прості змінні на кшталлт рядків,
чисел та масивів, але не може валідувати обʼєкти. Щоб зробити це, сконфігуруйте
клас Validator
так, як пояснюється у наступних розділах.
Дізнайтеся більше
- Метадані
- Завантаження джерел
- Валідація
- Як створити користувацьке обмеження валідації
- Як застосувати лише підмножину усіх ваших обмежень валідації (групи валідації)
- Як валідувати необроблені значення (скалярні значення та масиви)
- Як послідовно застосовувати групи валідації
- Як обробляти різні рівні помилок
- Як перекладати повідомлення обмежень валідації