2017-03-09 86 views
3

我想给用户自定义的404页面重定向NotFoundHttpException的情况下,Laravel 5.4Laravel 5.4 |自定义页面NotFoundHttpException

要做到这一点,我添加了应用程序\例外\ 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); 
} 

由于某些原因,这是行不通的。如果我在这里做错了什么,有人可以指出吗?

谢谢!

+1

Hava使用了正确的命名空间'use Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException;'? –

+0

@Williamwei - 非常感谢。我完全忘了包括它。 – whitecollar

回答

4

就在这里创建

resources/views/errors/404.blade.php 

视图Laravel会自动替你服刑

6

Laravel将呈现回落的默认视图之前您的错误页面。

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

上述目录中的视图应具有您要呈现的HTTP状态代码的名称。

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

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

3

你并不需要修改渲染功能。保持它像原来的:

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

所有您需要做的仅仅是使视图:

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

再加入一些内容到文件,例如:

@extends('layouts.app') 

@section('content') 
404 
@endsection 

Laravel照顾其余的......

+0

已经有两个答案说完全一样。不要再回答,而应考虑对这些人进行投票和/或通过评论添加其他信息。 – ruuter

+0

谢谢它适合我。你节省了我的时间 – LetsCMS