Как получить объекты, связанные с ошибками проверки Symfony - PullRequest
0 голосов
/ 30 мая 2018

У меня есть объект, для которого я выполняю проверку перед сохранением в моем контроллере.

/** @var ConstraintViolationList $errors */
    $errors = $this->validator->validate($entity);

Поэтому, когда проверка не проходит, я получаю список ConstraintViolation объектов.Как я могу получить связанные объекты для этих ошибок?Моя цель состоит в том, чтобы возвращать сопоставленные ошибки каждой сущности (это будет выделять недопустимые элементы на стороне внешнего интерфейса).

Я буду использовать настраиваемое поле из объекта вместо идентификатора - все объекты имеют его перед сохранением в БД, поэтому внешний интерфейс можетразличать их.Я полагаю, что я должен написать свой собственный нормализатор ограничений, но он ничего не знает о связанных объектах для ошибок.

1 Ответ

0 голосов
/ 31 мая 2018

ConstraintViolationList ведет себя как итератор реализации ConstraintViolationInterface.Из каждого объекта ConstraintViolationInterface вы можете вызывать метод getPropertyPath, который дает путь свойства к недопустимому элементу корневых данных (корневые данные могут быть получены с помощью метода getRoot из любой реализации ConstraintViolationInterface.

use Symfony\Component\PropertyAccess\PropertyAccess;

// ...

foreach ($errors as $error) {
    $invalidElementAccessor = PropertyAccess::createPropertyAccessor();
    $invalidElement = $invalidElementAccessor->getValue($error->getRoot(), $error->getPropertyPath());

    // Do something with element
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...