【一】概论
(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‘); }
.