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

Метод inContext

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

Метод удобен, когда у одной сущности есть несколько наборов правил, например для регистрации и для редактирования профиля.

Синтаксис

public function inContext(mixed $value, string|GroupSequence|array $groups): ConstraintViolationListInterface

Пример

Давайте создадим сущность User с двумя группами валидации и проверим её методом inContext:

<?php namespace AppEntity; use SymfonyComponentValidatorConstraints as Assert; class User { #[AssertNotBlank(groups: ['registration'])] #[AssertLength(min: 3, groups: ['registration', 'profile'])] public string $name = ''; #[AssertNotBlank(groups: ['registration'])] #[AssertEmail(groups: ['registration', 'profile'])] public string $email = ''; } ?>

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

<?php namespace AppController; use AppEntityUser; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentValidatorValidatorValidatorInterface; class UserController extends AbstractController { public function index(ValidatorInterface $validator): Response { $user = new User(); $user->name = 'ab'; $user->email = 'invalid'; $res = $validator->inContext($user, 'registration'); return new Response((string) $res); } } ?>

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

AppEntityUser.name: This value is too short. It should have 3 characters or more. AppEntityUser.email: This value is not a valid email address.

Пример

Давайте проверим тот же объект в группе profile:

<?php namespace AppController; use AppEntityUser; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentValidatorValidatorValidatorInterface; class UserController extends AbstractController { public function index(ValidatorInterface $validator): Response { $user = new User(); $user->name = 'ab'; $user->email = 'invalid'; $res = $validator->inContext($user, 'profile'); return new Response((string) $res); } } ?>

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

AppEntityUser.name: This value is too short. It should have 3 characters or more. AppEntityUser.email: This value is not a valid email address.

Пример

Давайте передадим массив групп для проверки в нескольких контекстах:

<?php namespace AppController; use AppEntityUser; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentValidatorValidatorValidatorInterface; class UserController extends AbstractController { public function index(ValidatorInterface $validator): Response { $user = new User(); $user->name = 'abcde'; $user->email = 'user@example.com'; $res = $validator->inContext($user, ['registration', 'profile']); return new Response((string) $res); } } ?>

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

""

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

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