Валидация ввода для API

Добавление предварительной валидации данных команд для красивого отображения ошибок в формате JSON для отображения на фронтенде. Централизованный вывод ошибок валидации в middleware.

Скрытый контент
Комментарии (7)
Denis
2020-03-30 20:27

Добрый день, спасибо за урок. А будет как - то реализованы коды ошибок? Чтобы фронт знал как необходимо реагировать на ту или иную ошибку.

Ответить
Дмитрий Елисеев
2020-03-31 11:01

Пока все ошибки у нас либо доменные, либо валидации. Для кастомного кода можно возвращать напрямую $exception->getCode().

Ответить
Дмитрий
2020-03-31 03:45

Дмитрий здравствуйте, не могу понять как работает

/**
 * @Assert\NotBlank
 */

Как вообще могут комментарии влиять на код? Здесь получается мы вызвали метод NotBlank? Как это вообще работает?

Ответить
Дмитрий Елисеев
2020-03-31 11:12

Непосредственно в PHP это просто комментарии и нативно они никак не работают..

Валидатор использует библиотеку doctrine/annotations. А она уже просто обходит поля через рефлексию и парсит эти строки.

Ответить
Arunas
2020-03-31 14:26

Спасибо. Очень интересно.

Ответить
Роман
2020-05-21 16:47

Дмитрий, после коммита Extracted validation handling ElisDN, psalm стал ругаться на ошибку ERROR: UndefinedDocblockClass в ValidationExceptionHandler::errorsArray на строку $violation->getMessage(). Решил путём установки полифилла composer require symfony/polyfill-php80 --dev чтобы был доступен \Stringable интерфейс

Ответить
Дмитрий Елисеев
2020-05-22 06:44

Да, в свежем валидаторе на будущее добавили Stringable, который появится только в PHP 8.0.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий