【发布时间】:2016-05-28 19:42:49
【问题描述】:
如何为每个 http 错误响应定义自定义视图文件,然后在我的应用程序中返回 http 错误响应时让 laravel 自动将该视图文件发送给用户?
【问题讨论】:
-
你的意思是返回错误代码然后 Laravel 返回适当的自定义视图?
标签: php laravel exception laravel-5
如何为每个 http 错误响应定义自定义视图文件,然后在我的应用程序中返回 http 错误响应时让 laravel 自动将该视图文件发送给用户?
【问题讨论】:
标签: php laravel exception laravel-5
基本上你可以为每一个HTTP错误码定义一个页面,并把它放在resources/views/errors/中
因此,如果您想为 404 HTTP 响应创建视图,您应该创建视图:
resources/views/errors/404.blade.php
Laravel 会自动将您的用户重定向到特定视图
此外,您可以自定义App\Exceptions\Handler 类,该类负责从异常中呈现错误:每次Exception 上升时都会调用render 方法,因此您可以拦截由HTTP 错误生成的HttpException 和重定向到任何你想要的地方:
public function render($request, Exception $e)
{
//if $e is an HttpException
if ($e instanceof HttpException ) {
//get the status code
$status = $e->getStatusCode() ;
//if status code is 501 redirect to custom view
if( $status == 501 )
return response()->view('my.custom.view', [], 501);
}
return parent::render($request, $e);
}
【讨论】:
Handler 的render 方法将使其自动:每次在APP 内出现501 错误时,都会触发render 方法并且视图将与状态码一起显示。在您的情况下,您将手动返回视图并传递状态代码
.env 文件中的第一个
将 APP_DEBUG=true 更改为 APP_DEBUG=false
其次创建您的自定义文件并重命名为404.balde.php 并复制到
resources/views/errors/404.blade.php
【讨论】: