Метод createValidatorBuilder
Метод createValidatorBuilder класса Validation
создаёт объект ValidatorBuilder. Этот построитель
позволяет настроить будущий валидатор: подключить
загрузчики метаданных, указать переводчик, задать
кэш и другие параметры. После настройки вызывается
метод getValidator, который возвращает готовый
объект ValidatorInterface. Метод не принимает
параметров.
Синтаксис
<?php
use Symfony\Component\Validator\Validation;
$builder = Validation::createValidatorBuilder();
?>
Пример
Давайте создадим построитель валидатора и получим из него готовый валидатор:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Validator\Validation;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$builder = Validation::createValidatorBuilder();
$validator = $builder->getValidator();
return new Response(get_class($validator));
}
}
?>
Результат выполнения кода:
Symfony\Component\Validator\Validator\RecursiveValidator
Пример
Давайте настроим построитель с помощью метода
enableAnnotationMapping и проверим объект
на валидность:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints as Assert;
class ArticleController extends AbstractController
{
#[Route('/article/validate', name: 'article_validate')]
public function validate(): Response
{
$builder = Validation::createValidatorBuilder();
$builder->enableAnnotationMapping();
$validator = $builder->getValidator();
$article = new class {
#[Assert\NotBlank]
public string $title = '';
};
$errors = $validator->validate($article);
return new Response((string) $errors);
}
}
?>
Результат выполнения кода:
Object(App\Controller\ArticleController::validate():string)::title: This value should not be blank.
Смотрите также
-
класс
Validation,
который предоставляет статические методы для работы с валидацией -
метод
createValidator,
который сразу создаёт готовый валидатор -
метод
validate,
который проверяет объект на соответствие ограничениям -
класс
ConstraintViolationList,
который хранит список найденных нарушений