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 AdminController;
    use ThinkController;
    class EmptyController extends Controller{
        public function _empty(){
            echo "访问的页面不存在,空控制器";
        }
    }
?>

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

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

分析:

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

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

第二步:展示静态页

将错误模板页面复制到指定位置ApplicationAdminViewEmptyerror.html,修改静态资源路径

第三步:

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

①EmptyController.class.php:

<?php
    namespace AdminController;
    use ThinkController;
    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');
        }

          

.

原文地址:https://www.cnblogs.com/fightjianxian/p/8715670.html