Компонент Validator
Дата обновления перевода 2023-08-25
Компонент Validator
Компонент Validator предоставляет инструменты для валидации значений, следуя спецификации валидации JSR-303 Bean.
Установка
1
$ composer require symfony/validator
Также вы можете клонировать репозиторий https://github.com/symfony/validator.
Note
Если вы устанавливаете этот компонент вне приложения Symfony, вам нужно
подключить файл vendor/autoload.php
в вашем коде для включения механизма
автозагрузки классов, предоставляемых Composer. Детальнее читайте в
этой статье.
Использование
See also
Эта статья объясняет как использовать функции Validator как независимого компонента в любом приложении PHP. Прочитайте статью Валидация для понимания как использовать его в приложениях Symfony.
Поведение компонента Validator основывается на двух концептах:
- Ограничения (Constraints), которые определяют правила, которые нужно валидировать;
- Валидаторы, которые являются классами, содержащими саму логику валидации.
Следующий пример показывает, как валидировать, чтобы строка была как минимум 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 object (который реализует ValidatorInterface) - это основная точка доступа компонента Validator. Чтобы создать его новый экземпляр, рекомендуется использовать классValidation:
1 2 3
use Symfony\Component\Validator\Validation;
$validator = Validation::createValidator();
Этот объект $validator
может валидировать простые переменные вроде
строк, чисел и массивов, но не может валидировать объекты. Чтобы сделать
это, сконфигурируйте класс Validator
так, как объясняется в следующих
разделах.
Узнайте больше
- Метаданные
- Загрузка источников
- Валидация
- Как создать пользовательское ограничение валидации
- Как применить только подмножество всех ваших ограничений валидации (группы валидации)
- Как валидировать необработанные значения (скалярные значения и массивы)
- Как применять группы валидации последовательно
- Как справляться с разными уровнями ошибок
- Как переводить сообщения ограничений валидации