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

Метод validate

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

Синтаксис

public function validate(mixed $value, ?array $groups = null, mixed $payload = null): ConstraintViolationListInterface

Пример

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

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

Теперь создадим валидатор и проверим объект с корректными данными:

<?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\Validator\ValidatorInterface; class ArticleController extends AbstractController { #[Route('/article/validate', name: 'article_validate')] public function validate(ValidatorInterface $validator): Response { $article = new Article(); $article->title = 'abcde'; $article->text = 'article text'; $article->views = 10; $res = $validator->validate($article); return new Response('Violations count: ' . count($res)); } } ?>

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

"Violations count: 0"

Пример

Давайте проверим объект с некорректными данными:

<?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\Validator\ValidatorInterface; class ArticleController extends AbstractController { #[Route('/article/validate-invalid', name: 'article_validate_invalid')] public function validateInvalid(ValidatorInterface $validator): Response { $article = new Article(); $article->title = 'ab'; $article->text = ''; $article->views = -5; $res = $validator->validate($article); $messages = []; foreach ($res as $violation) { $messages[] = $violation->getMessage(); } return new Response(implode(', ', $messages)); } } ?>

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

"This value is too short. It should have 3 characters or more., This value should not be blank., This value should be positive."

Пример

Давайте проверим объект с указанием конкретной группы валидации:

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

Теперь проверим объект только по группе 'create':

<?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\Validator\ValidatorInterface; class ArticleController extends AbstractController { #[Route('/article/validate-group', name: 'article_validate_group')] public function validateGroup(ValidatorInterface $validator): Response { $article = new Article(); $article->title = 'abcde'; $article->text = 'article text'; $article->views = -5; $res = $validator->validate($article, null, ['create']); return new Response('Violations count: ' . count($res)); } } ?>

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

"Violations count: 0"

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

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