Метод createValidator класса Validation
Метод createValidator класса Validation создаёт
и возвращает объект валидатора ValidatorInterface.
Валидатор проверяет объекты и значения на соответствие
ограничениям Constraint. Метод принимает необязательный
параметр $validatorBuilder - объект ValidatorBuilder,
который настраивает создание валидатора. Если параметр не передан,
используется стандартный построитель с настройками по умолчанию.
Синтаксис
Validation::createValidator(?ValidatorBuilder $validatorBuilder = null): ValidatorInterface
Пример
Давайте создадим валидатор и проверим строку на длину:
<?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\Length;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$validator = Validation::createValidator();
$violations = $validator->validate('abcde', [
new Length(['min' => 10]),
]);
return new Response((string) $violations);
}
}
?>
Результат выполнения кода:
"This value is too short. It should have 10 characters or more."
Пример
Давайте проверим объект с несколькими свойствами:
<?php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Article
{
#[Assert\NotBlank]
public string $title = '';
#[Assert\Length(min: 5)]
public string $text = '';
}
?>
Теперь создадим валидатор и проверим объект Article:
<?php
namespace App\Controller;
use App\Entity\Article;
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/check', name: 'article_check')]
public function check(): Response
{
$validator = Validation::createValidator();
$article = new Article();
$article->title = '';
$article->text = 'abc';
$violations = $validator->validate($article);
return new Response((string) $violations);
}
}
?>
Результат выполнения кода:
"title: This value should not be blank. text: This value is too short. It should have 5 characters or more."
Смотрите также
-
класс
Validation,
который предоставляет статические методы для работы с валидацией -
метод
createValidatorBuilder,
который создаёт построитель валидатора -
метод
validate,
который проверяет объект на соответствие ограничениям -
класс
ConstraintViolationList,
который хранит список найденных нарушений