这让我发疯了。我正在使用Laravel 5,看来4.2和生成404页面的文档不起作用。
首先,没有global.php所以我尝试将以下内容放在routes.php中:
App::missing(function($exception)
{
return Response::view('errors.missing', array(), 404);
});
这导致错误"方法缺失()未找到"
Debug设置为false。
我已经搜索过并搜索过,但到目前为止还没有找到关于在Laravel 5中设置404页面的信息。非常感谢任何帮助。
答案 0 :(得分:37)
转到资源/视图/错误并在404页面上创建一个404.blade.php文件,Laravel负责其余部分。
答案 1 :(得分:10)
如果您想拥有一些全局解决方案,可以通过添加以下代码在/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);
}
答案 2 :(得分:2)
我喜欢案例陈述方法,但它有一些深层次的问题。
然而,这会捕获所有错误:
Route::any('/{page?}',function(){
return View::make('errors.404');
})->where('page','.*');
答案 3 :(得分:2)
在Laravel 5中,您只需在资源/观看/错误下放置自定义 404.blade.php 就可以了。对于500之类的其他错误,您可以在 app / 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做同样的事情
答案 4 :(得分:2)
Laravel 5已经在app / Exceptions / Handler.php下有一个预定义的渲染方法(第43行)。只需在parent :: render之前插入重定向代码即可。像这样,
details
注意:我的视图位于资源/视图下。你可以把它放在任何你想要的地方。
答案 5 :(得分:0)
Lavavel 5.8
在resources/views/errors/404.blade.php
中创建一个文件并添加此代码。
@extends('errors::minimal')
@section('title', __('Not Found'))
@section('code', '404')
@if($exception)
@section('message', $exception->getMessage())
@else
@section('message', __('Not Found'))
@endif
然后在您的控制器中可以使用:
abort(404, 'Whatever you were looking for, look somewhere else');
答案 6 :(得分:0)
我一直在寻找其他问题的答案,但认为如果有人正在寻找其他问题,我会提供帮助。
运行命令 php artisan vendor:publish 您将看到所有可发布的文件。输入laravel-errors的数字 然后将错误文件发布到resources / views / errors文件夹