laravel 5自定义404

时间:2014-10-15 23:48:01

标签: php laravel laravel-routing laravel-5

这让我发疯了。我正在使用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页面的信息。非常感谢任何帮助。

7 个答案:

答案 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文件夹