WebWost WebWostbeta

Lumen и ValidationException

Вывод ошибок валидации, вместо "The given data was invalid."

PHP

Al-Sher

Всем привет. Недавно, работая с микрофреймворком Lumen, я столкнулся с ошибкой "The given data was invalid." при попытке использования стандартной валидации. Как оказалось, ошибка связана с тем, что в lumen вырезан обработчик исключения ValidationException и оно выводится как обычная 500 Internal Server Error (вполне возможно, что я ошибаюсь). Работа с исключениями происходит в файле app/Exceptions/Handler.php , в функции render, которая отвечает за отображение исключения на странице. Для работы с ValidationException, то есть с исключениями валидации, нам необходимо использовать следующее условие:

if($exception instanceof ValidationException) {
// Code
}

То есть, мы проверяем что исключение является объектом ValidationException. Если вывести объект ValidationException c помощью функции dump, то мы увидим содержимое данного объекта. Как можно увидеть, он содержит в себе status-код, то есть http код, который необходимо отдавать клиенту и объект validator, который содержит информацию о нашей валидации. Для получения массива ошибок валидации необходимо выполнить функцию errors, принадлежащую нашему исключению:

dump($exception->errors())

Конечный код, полученный у меня, для вывода ошибок валидации в json массивах:

    public function render($request, Throwable $exception)
    {
        if($exception instanceof ValidationException) {
            return response()->json($exception->errors(), $exception->status);
        }
        return parent::render($request, $exception);
    }

0 комментариев

Новый комментарий