[译]Laravel 5.0 之自定义错误页面
时间:2022-05-02
本文章向大家介绍[译]Laravel 5.0 之自定义错误页面,主要内容包括源代码解析、如何实现自定义、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
本文译自 Matt Stauffer 的系列文章.
在以往版本的 Laravel 中,假如你想自定义错误页面——比如当用户访问不存在的页面时显示一张猫的 GIF 动画图片——你可能会通过 Google 进行搜索,然后找到 Dries Vints 写的这个文档。
在 Laravel 5 中,这个问题得到了改进。>>直达解决方案
源代码解析
在新版本的 Laravel 中,所以处理自定义错误和异常的代码都移到了 app/Exceptions/Handler.php
里。如果你读了之前的 bring Whoops back, 你应该还记得就是通过这里的代码实现的。
但阅读代码时你可能发现了,默认是这样处理的:
/**
* Render an exception into an HTTP response.
*
* @param IlluminateHttpRequest $request
* @param Exception $e
* @return IlluminateHttpResponse
*/
public function render($request, Exception $e)
{
if ($this->isHttpException($e))
{
return $this->renderHttpException($e);
}
else
{
return parent::render($request, $e);
}
}
对所有的 HTTP 异常(比如 404 或者 503 这样的异常),它用 renderHttpException()
方法来处理,而这个方法并不是在这个文件中定义的。所以我们继续追溯到它的父类,IlluminateFoundationExceptionsHandler
, 在这个类里面,我们找到了 renderHttpException()
方法的代码:
/**
* Render the given HttpException.
*
* @param SymfonyComponentHttpKernelExceptionHttpException $e
* @return SymfonyComponentHttpFoundationResponse
*/
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
的视图文件,就可以了!
- Java 反射机制详解
- shell 脚本多进程创建 mysql 测试数据
- Zookeeper 原理与实践
- 修改 mysql/oracle/bash/vimrc/cmd 提示符格式与颜色
- shell 学习笔记(17)
- 关于 xargs 参数被截断,tar 文件被覆盖的问题
- 一些sql用法例子【Updating】
- 关于腾讯的一道字符串匹配的面试题
- Sort Map by Value in Java
- java 利用反射模拟动态语言的 eval 函数
- Spark函数讲解: combineByKey
- hadoop 里执行 MapReduce 任务的几种常见方式
- Pig、Hive、MapReduce 解决分组 Top K 问题
- Pig、Hive 自定义输入输出分隔符以及Map、Array嵌套分隔符冲突问题
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 线性表--顺序表--静态链表(八)
- 线性表--顺序表--循环链表(五)
- java学习之路:1.编译器Eclipse安装教程
- 指针作形参,需要注意的问题。
- SetConsoleTextAttribute函数用法
- C语言俄罗斯方块(旧版本)
- 线性表--顺序表--数组(三)
- 算法复杂度(二)
- 线性表--顺序表--单向链表(四)
- C语言俄罗斯方块(新版本完整代码)
- 线性表--顺序表--双向链表(六)
- C/C++什么时候使用二级指针,你知道吗?
- 萌新学习C++容易漏掉的知识点,看看你中招了没有(一)
- 萌新不看会后悔的C++string字符串常用知识点总结
- salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)