前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[译]Laravel 5.0 之自定义错误页面

[译]Laravel 5.0 之自定义错误页面

作者头像
小李刀刀
发布2018-03-02 17:02:20
1.3K0
发布2018-03-02 17:02:20
举报
文章被收录于专栏:PHP 开发PHP 开发

本文译自 Matt Stauffer 的系列文章.


在以往版本的 Laravel 中,假如你想自定义错误页面——比如当用户访问不存在的页面时显示一张猫的 GIF 动画图片——你可能会通过 Google 进行搜索,然后找到 Dries Vints 写的这个文档

在 Laravel 5 中,这个问题得到了改进。>>直达解决方案

源代码解析

在新版本的 Laravel 中,所以处理自定义错误和异常的代码都移到了 app/Exceptions/Handler.php 里。如果你读了之前的 bring Whoops back, 你应该还记得就是通过这里的代码实现的。

但阅读代码时你可能发现了,默认是这样处理的:

代码语言:javascript
复制
/**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $e
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $e)
    {
        if ($this->isHttpException($e))
        {
            return $this->renderHttpException($e);
        }
        else
        {
            return parent::render($request, $e);
        }
    }

对所有的 HTTP 异常(比如 404 或者 503 这样的异常),它用 renderHttpException() 方法来处理,而这个方法并不是在这个文件中定义的。所以我们继续追溯到它的父类,Illuminate\Foundation\Exceptions\Handler, 在这个类里面,我们找到了 renderHttpException() 方法的代码:

代码语言:javascript
复制
/**
     * Render the given HttpException.
     *
     * @param  \Symfony\Component\HttpKernel\Exception\HttpException  $e
     * @return \Symfony\Component\HttpFoundation\Response
     */
    protected function renderHttpException(HttpException $e)
    {
        if (view()->exists('errors.'.$e->getStatusCode()))
        {
            return response()->view('errors.'.$e->getStatusCode(), [], $e->getStatusCode());
        }
        else
        {
            return (new SymfonyDisplayer(config('app.debug')))->createResponse($e);
        }
    }

所以,如果存在 errors.{httpStatusCode} 的视图,它就会直接显示该视图(并且传入一些必要的信息)。

如何实现自定义

#

根据前文的分析,如果我们创建了一个名为 "errors.{errorStatusCode}" 的视图,当对应的异常码出现时,系统就会自动显示这个视图。

那么我们要做的事情就太简单了。比如你想自定义 404 错误页面的话,只要创建一个 resources/views/errors/404.blade.php 的视图文件,就可以了!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 源代码解析
  • 如何实现自定义
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档