Laravel5框架自定义错误页面配置操作示例


Posted in PHP onApril 17, 2019

本文实例讲述了Laravel5框架自定义错误页面配置操作。分享给大家供大家参考,具体如下:

♩ 背景

  • 最近试着学习 laravel 5.5,使用 composer 下载新的框架源代码
composer create-project --prefer-dist laravel/laravel lar5Pro 5.5.*
  • 发现在输入错误的链接时,会有如下的提示信息:

Laravel5框架自定义错误页面配置操作示例

  • 想到,一般成型的网站都会自定义404、501、503等页面,所以通过网上搜索方法,进行测试,可推荐如下的实现过程 …
    框架: Laravel 5.5

♪ 操作

①. 解释

  • 所有异常错误都由类 App\Exceptions\Handler 处理,该类包含两个方法:reportrender ,其中的 render 方法会将异常渲染到 HTTP 响应中

②. render 方法优化

  • 参考了网上的相关介绍,发现可以将 App\Exceptions\Handler 中的 render 方法修改为下面的样子:
public function render($request, Exception $exception)
  {
    /* 错误页面 */
    if ($exception) {
      //TODO Laravel5.5 框架中 Exception 类不存在 getStatusCode()方法,或许只能支持前面的版本!
      //$code = $exception->getStatusCode();
      $code = FlattenException::create($exception)->getStatusCode();
      return response()->view('error.' . $code, [], $code);
    }
    return parent::render($request, $exception);
  }

分析

经过对框架源码的查看发现,我们是通过实例化 FlattenException 类来获得请求状态码的,根据提供的测试类 FlattenExceptionTest ,从而得出了上述的代码,建议可以阅读下源代码以做比较

Laravel5框架自定义错误页面配置操作示例

③. 创建 view 页面

  • resources/views/error/ 目录下创建错误页面
  • 命名格式为 {error.code}.blade.php

Laravel5框架自定义错误页面配置操作示例

④. 访问测试

  • 举例来讲,在 404.blade.php 中编辑设计自己的 404页面
  • 通过访问一个不存在的路由,以本人为例,显示效果如下:

Laravel5框架自定义错误页面配置操作示例

  • 默认如果数据处理有错,是 500 异常报错,此时可以通过 debug 查看并进行排错处理…

Laravel5框架自定义错误页面配置操作示例

♫ 附录

  • 根据上面的操作,可扩展创建其他错误页面
  • 此处附录一下 404.blade.php 源代码,仅做参考
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>404页面</title>
  <style>
    #box{
      margin: 0 auto;
      width: 540px;
      height: 540px;
    }
    p{
      margin-bottom: 60px;
      width: 540px;
      height: 20px;
      text-align: center;
      line-height: 20px;
    }
    #mes{
      font-size: 30px;
      color: red;
    }
    .hint{
      color: #999;
    }
    a{
      color: #259AEA;
      text-decoration:none
    }
  </style>
  <script>
    var i = 5;
    var intervalID = setInterval("fun()", 1000);
    function fun() {
      if (i == 0) {
        window.location.href = "/";
        clearInterval(intervalID);
      }
      document.getElementById("mes").innerHTML = i;
      i--;
    }
  </script>
</head>
<body>
<div id="box">
  <img src="{{ asset('images/error/404.jpg') }}" alt="404">
  <p>将在 <span id="mes">5</span> 秒钟后返回 <a href="{{ url('/') }}" rel="external nofollow" >首页</a></p>
  <p class="hint">非常抱歉 - 您可能输入了错误的网址,或者该网页已删除或移动</p>
</div>
</body>
</html>

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP与已存在的Java应用程序集成
Oct 09 PHP
信用卡效验程序
Oct 09 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
快速开发一个PHP扩展图文教程
Dec 12 PHP
优化php效率,提高php性能的一些方法
Mar 24 PHP
PHP图片裁剪函数(保持图像不变形)
May 04 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
如何实现php图片等比例缩放
Jul 28 PHP
php文件缓存方法总结
Mar 16 PHP
PHP CURL使用详解
Mar 21 PHP
PHP 8新特性简介
Aug 18 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 #PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
Apr 16 #PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 #PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 #PHP
Laravel框架文件上传功能实现方法示例
Apr 16 #PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 #PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 #PHP
You might like
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
MySQL中create table语句的基本语法是
2007/01/15 PHP
php实现telnet功能示例
2014/04/08 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
原生js代码能实现call和bind吗
2019/07/31 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
Python的Flask开发框架简单上手笔记
2015/11/16 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
python中logging包的使用总结
2018/02/28 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
公司成立感言
2014/01/11 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
店面销售职位的职责
2014/03/09 职场文书
房地产广告词大全
2014/03/19 职场文书
双拥工作宣传标语
2014/06/26 职场文书
村党组织公开承诺书
2015/04/30 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
vue3中provide && inject的使用
2021/07/01 Vue.js