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

Метод get класса ConstraintViolationList

Метод get класса ConstraintViolationList возвращает объект ConstraintViolation по его индексу в коллекции. Первым параметром передаётся целое число - позиция нарушения в списке. Нумерация начинается с нуля. Если по указанному индексу элемента нет, будет выброшено исключение OutOfBoundsException. Метод удобен, когда нужно достать конкретную ошибку валидации, а не перебирать весь список целиком.

Синтаксис

public function get(int $index): ConstraintViolation

Пример

Давайте создадим валидатор и получим первое нарушение из списка:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentValidatorValidation; use SymfonyComponentValidatorConstraintsNotBlank; class ArticleController extends AbstractController { public function index(): Response { $validator = Validation::createValidator(); $res = $validator->validate('', [ new NotBlank(), ]); $violation = $res->get(0); return new Response($violation->getMessage()); } } ?>

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

This value should not be blank.

Пример

Давайте переберём все ошибки списка по индексам через метод get:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentValidatorValidation; use SymfonyComponentValidatorConstraintsNotBlank; use SymfonyComponentValidatorConstraintsLength; class ArticleController extends AbstractController { public function index(): Response { $validator = Validation::createValidator(); $res = $validator->validate('abcde', [ new NotBlank(), new Length(['min' => 10]), ]); $messages = []; for ($i = 0; $i < $res->count(); $i++) { $messages[] = $res->get($i)->getMessage(); } return new Response(implode(', ', $messages)); } } ?>

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

This value is too short. It should have 10 characters or more.

Пример

Давайте получим не только сообщение, но и путь свойства, к которому относится нарушение:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentValidatorValidation; use SymfonyComponentValidatorConstraintsNotBlank; class ArticleController extends AbstractController { public function index(): Response { $validator = Validation::createValidator(); $res = $validator->validate('', [ new NotBlank(), ]); $violation = $res->get(0); return new Response( $violation->getPropertyPath() . ': ' . $violation->getMessage() ); } } ?>

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

": This value should not be blank."

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

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