Пользовательский рендеринг исключения игнорирует сообщения проверки

После добавления пользовательского представления для обработки исключений мои сообщения проверки больше не возвращаются, а только: «Данные данные не прошли проверку».

Я добавил следующее в handler.php и удалил оригинальный parent::render($request, $exception);

public function render($request, Exception $exception){

    return response()->view('error', compact('exception'), 500);

}

Есть ли способ сохранить мои сообщения проверки и отобразить представление об ошибке, когда это не ошибка проверки, поскольку я ненавижу видеть представление по умолчанию «упс, произошла ошибка».

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
27
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы посмотрите немного дальше в коде parent::render(), вы увидите строку с:

return $this->convertValidationExceptionToResponse($e, $request);

Это применяет такие функции к запросу, как withInput() и withErrors().

Итак, вы можете попробовать код, похожий на этот:

public function render(...) {
  return response()->view('error', ...)
 ->withInput(Arr::except($request->input(), $this->dontFlash))
 ->withErrors($exception->errors(), $exception->errorBag);
}
Ответ принят как подходящий

Я заставил это работать по назначению, чтобы сохранить мои пользовательские сообщения проверки, созданные FormRequest, которые мне пришлось добавить в мой App/Exceptions/Handler.php:

use Illuminate\Validation\ValidationException;

public function render($request, Exception $exception)
{
    if ($exception instanceof ValidationException) {
        return parent::render($request, $exception);
    }
    else{
        return response()->view('error', compact('exception'), 500);
    }
}

Другие вопросы по теме