Laravel 5.4 | NotFoundHttpException的自定义页面

时间:2017-03-09 01:08:08

标签: laravel laravel-5.4

我试图将用户重定向到Laravel 5.4中NotFoundHttpException的自定义404页面

为此,我在App \ Exceptions \ Handler.php文件中添加了以下代码:

public function render($request, Exception $exception)
{
    if ($exception instanceof NotFoundHttpException) {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Not Found'], 404);
        }
        return response()->view('404', [], 404);
    }
    return parent::render($request, $exception);
}

出于某种原因,这不起作用。如果我在这里做错了,有人可以指出吗?

谢谢!

3 个答案:

答案 0 :(得分:13)

Laravel会在退回默认视图之前渲染您的错误页面。

如果您的视图是在resources/views/errors/404.blade.php中创建的。此页面将在回退错误页面之前呈现。

上述目录中的视图应该包含您尝试呈现的HTTP状态代码的名称。

更多信息可以在laravel文档中找到:

https://laravel.com/docs/5.4/errors#custom-http-error-pages

答案 1 :(得分:5)

只需在此处创建您的视图

resources/views/errors/404.blade.php

Laravel会自动为您服务

答案 2 :(得分:4)

您无需修改​​渲染功能。保持原状:

public function render($request, Exception $exception)
{
    return parent::render($request, $exception);
}

您所要做的只是制作视图:

  

资源/视图/错误/ 404.blade.php

然后将一些内容添加到文件中,例如:

@extends('layouts.app')

@section('content')
404
@endsection

Laravel负责其余的事情......