Компонент Validator
Дата обновления перевода 2025-08-19
Компонент 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 так, как объясняется в следующих
разделах.
Узнайте больше
- Метаданные
 - Загрузка источников
 - Валидация
 - Как создать пользовательское ограничение валидации
 - Как применить только подмножество всех ваших ограничений валидации (группы валидации)
 - Как валидировать необработанные значения (скалярные значения и массивы)
 - Как применять группы валидации последовательно
 - Как справляться с разными уровнями ошибок
 - Как переводить сообщения ограничений валидации