ThinkPHP---thinkphp拓展之空操作
【一】概论
(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');
}
.
最新文章
- c语言第11次作业
- [css3]跑马灯
- socket关联查询
- Runnable,Thread实现多线程以及Runnable的同步资源共享
- InnoDB锁机制分析
- Maven的依赖范围
- 从POI到O2O 看百度地图如何走出未来之路
- 001.android初级篇之ToolBar
- IIS注册.net框架及temp文件权限开放
- Freemarker数字转时间
- 第四届CCF大数据学术会议征文通知
- 基于visual Studio2013解决C语言竞赛题之1092链表转换
- html-webpack-plugin
- mybatis 自动生成代码(mybatis generator)
- 让你用sublime写出最完美的python代码--windows环境
- bzoj:2331: [SCOI2011]地板
- leetcode 678. Valid Parenthesis String
- web 应用常见安全漏洞
- Exception in thread ";main"; java.lang.UnsupportedClassVersionError: org/apache/ma ven/cli/Maven
- mysql批量进行optimize table操作
热门文章
- mac终端配置Android ADB命令
- c#控件重绘的问题
- Bootstrap Dropdown 源码分析
- go7---map
- SparkSQL与Hive on Spark
- luogu 4630 [APIO2018] Duathlon 铁人两项
- luogu 3388 【模板】割点(割顶)
- BZOJ_1692_[Usaco2007 Dec]队列变换_后缀数组
- eclipse maven创建web项目
- bzoj 1770: [Usaco2009 Nov]lights 燈【高斯消元+dfs】