Lumen и ValidationException
Вывод ошибок валидации, вместо "The given data was invalid."
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);
}