Это сводит меня с ума. Я работаю с Laravel 5, и похоже, что документы для 4.2 и генерация 404 страниц не работают.
Во-первых, нет global.php, поэтому я попытался поместить следующее в routes.php:
App::missing(function($exception) { return Response::view('errors.missing', array(), 404); });
Это приводит к ошибке «метод missing () не найден»
Для параметра Debug установлено значение false.
Я искал и искал, но пока не нашел информации о настройке 404 страниц в Laravel 5. Поблагодарил бы за любую помощь.
Перейдите к ресурсам / представлениям / ошибкам и создайте файл 404.blade.php с тем, что вы хотите на своей странице 404, и Laravel позаботится обо всем остальном.
если вы хотите иметь какое-то глобальное решение, вы можете внести изменения в /app/Exceptions/Handler.php, добавив следующий код
public function render($request, Exception $e) { if ($this->isHttpException($e)) { $statusCode = $e->getStatusCode(); switch ($statusCode) { case '404': return response()->view('layouts/index', [ 'content' => view('errors/404') ]); } } return parent::render($request, $e); }
Мне нравится подход к описанию дела, но у него есть некоторые проблемы, идущие на глубину.
Тем не менее, это уловляет все ошибки:
Route::any('/{page?}',function(){ return View::make('errors.404'); })->where('page','.*');
В Laravel 5 вы можете просто добавить пользовательский файл 404.blade.php в зависимости от ресурсов / представлений / ошибок и все. Для других ошибок, таких как 500, вы можете попробовать следующее в своем приложении / Exeptions / Handler.php :
public function render($request, Exception $e) { if ( ! config('app.debug') && ! $this->isHttpException($e)) { return response()->view('errors.500'); } return parent::render($request, $e); }
И сделайте то же самое для 500 HTTP Exeptions
Laravel 5 уже имеет предопределенный метод визуализации (строка 43) в приложении / Исключения / Handler.php. Просто вставьте код перенаправления перед parent :: render. Вот так,
public function render($request, Exception $e) { if ($e instanceof ModelNotFoundException) { $e = new NotFoundHttpException($e->getMessage(), $e); } //insert this snippet if ($this->isHttpException($e)) { $statusCode = $e->getStatusCode(); switch ($statusCode) { case '404': return response()->view('error', array(), 404); } } return parent::render($request, $e); }
Примечание. Мое мнение связано с ресурсами / представлениями. Вы можете как-то положить его куда угодно.