【一】概论

(1)定义

空操作指系统在找不到指定操作方法的时候。会定位到空操作方法 / 控制器来执行,利用这个机制,我们可以实现错误页面的自定义和URL的优化

(2)场景

常用于错误页面的自定义

(3)一般的系统自带的错误页面分两种

①调试 / 开发阶段:会显示出错误信息、错误位置、当前TP版本

②生成阶段:显示错误提示、TP版本。安全性相对于之前有所提高,但用户还是较差

(4)空操作

针对以上情况,这时便可以用空操作的机制进行错误页面美化

(5)说明------针对方法和控制器

1. 空操作方法:在控制器里可以定义一个操作方法,名字叫做_empty();若控制器里方法找不到时便会执行空操作

2. 空操作控制器:在TP里存在空控制器,若找不到指定控制器便会访问空控制器。空控制器文件名为EmptyController.class.php

(6)实现:

 1. 空操作方法_empty()

例如控制器EmailController.class.php里创建空方法_empty(),如果访问Email控制器下的方法不存在,则调用_empty()方法

注意:只是针对当前控制器的空操作方法

//空方法
public function _empty(){
echo "您好,页面不存在哦^_^,即" . ACTION_NAME . "操作不存在";
}

此时浏览器的URL输入不存在的模板Email控制器下的index.html模板,浏览器报错提示如下

常见的系统常量:http://570109268.iteye.com/admin/blogs/2415438

2. 空控制器EmptyController.class.php

<?php
namespace Admin\Controller;
use Think\Controller;
class EmptyController extends Controller{
public function _empty(){
echo "访问的页面不存在,空控制器";
}
}
?>

接下来访问空控制器+空方法,这时会优先调用空控制器的处理方法。如下访问空控制器aaa,下的空方法aaa

(7)案例:用空操作方法实现404页面的自定义

分析:

第一步:创建空操作控制器和空方法

空控制器EmptyController.class.php;空操作方法:_empty()

第二步:展示静态页

将错误模板页面复制到指定位置Application\Admin\View\Empty\error.html,修改静态资源路径

第三步:

在空控制器中的空操作方法,展示错误的模板页面

①EmptyController.class.php:

<?php
namespace Admin\Controller;
use Think\Controller;
class EmptyController extends Controller{
public function _empty(){
$this->display('Empty/error');//错误页面的展示
}
}
?>

②当控制器存在,方法不存在时会访问该控制器下的_empty()方法

例如访问Email控制器下的aaa方法,此时会调用Email控制器下的_empty方法。所以还要对该方法进行修改

EmailController.class.php:

//空方法
public function _empty(){
// echo "您好,页面不存在哦^_^,即" . ACTION_NAME . "操作不存在";
$this->display('Empty/error');
}

.

最新文章

  1. c语言第11次作业
  2. [css3]跑马灯
  3. socket关联查询
  4. Runnable,Thread实现多线程以及Runnable的同步资源共享
  5. InnoDB锁机制分析
  6. Maven的依赖范围
  7. 从POI到O2O 看百度地图如何走出未来之路
  8. 001.android初级篇之ToolBar
  9. IIS注册.net框架及temp文件权限开放
  10. Freemarker数字转时间
  11. 第四届CCF大数据学术会议征文通知
  12. 基于visual Studio2013解决C语言竞赛题之1092链表转换
  13. html-webpack-plugin
  14. mybatis 自动生成代码(mybatis generator)
  15. 让你用sublime写出最完美的python代码--windows环境
  16. bzoj:2331: [SCOI2011]地板
  17. leetcode 678. Valid Parenthesis String
  18. web 应用常见安全漏洞
  19. Exception in thread &quot;main&quot; java.lang.UnsupportedClassVersionError: org/apache/ma ven/cli/Maven
  20. mysql批量进行optimize table操作

热门文章

  1. mac终端配置Android ADB命令
  2. c#控件重绘的问题
  3. Bootstrap Dropdown 源码分析
  4. go7---map
  5. SparkSQL与Hive on Spark
  6. luogu 4630 [APIO2018] Duathlon 铁人两项
  7. luogu 3388 【模板】割点(割顶)
  8. BZOJ_1692_[Usaco2007 Dec]队列变换_后缀数组
  9. eclipse maven创建web项目
  10. bzoj 1770: [Usaco2009 Nov]lights 燈【高斯消元+dfs】