РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
450 of 1361 menu

Класс Validator

Класс Validator является центральным элементом компонента Validator. Он принимает объект и проверяет его свойства на соответствие ограничениям, заданным через атрибуты. Первым параметром передаётся объект для валидации, вторым - массив групп валидации. Метод validate возвращает объект ConstraintViolationList со списком найденных нарушений.

Синтаксис

use Symfony\Component\Validator\Validation; $validator = Validation::createValidator(); $violations = $validator->validate($object, $groups);

Пример

Давайте создадим простую сущность с ограничениями и проверим её через Validator:

<?php namespace App\Entity; use Symfony\Component\Validator\Constraints as Assert; class Article { #[Assert\NotBlank] #[Assert\Length(min: 3)] public string $title = ''; #[Assert\NotBlank] public string $text = ''; } ?>

Теперь проверим объект с пустыми полями:

<?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/validate', name: 'article_validate')] public function validate(): Response { $article = new Article(); $validator = Validation::createValidator(); $violations = $validator->validate($article); $res = []; foreach ($violations as $violation) { $res[] = $violation->getMessage(); } return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

["This value should not be blank.", "This value should not be blank."]

Пример

Давайте заполним поля корректными данными и снова выполним валидацию:

<?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/validate-ok', name: 'article_validate_ok')] public function validateOk(): Response { $article = new Article(); $article->title = 'abcde'; $article->text = 'article'; $validator = Validation::createValidator(); $violations = $validator->validate($article); $res = []; foreach ($violations as $violation) { $res[] = $violation->getMessage(); } return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

[]

Пример

Давайте проверим только одно свойство объекта через метод validateProperty:

<?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/validate-property', name: 'article_validate_property')] public function validateProperty(): Response { $article = new Article(); $article->title = 'ab'; $validator = Validation::createValidator(); $violations = $validator->validateProperty($article, 'title'); $res = []; foreach ($violations as $violation) { $res[] = $violation->getMessage(); } return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

["This value is too short. It should have 3 characters or more."]

Смотрите также

  • метод validate,
    который проверяет объект целиком
  • метод validateProperty,
    который проверяет одно свойство объекта
  • класс ConstraintViolationList,
    который хранит список нарушений
  • класс Validation,
    который создаёт экземпляр валидатора
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить