thinkphp5使用空模块
今天想做一个功能,可以后台设置url是二级域名(也是指向同一个服务器)还是一级域名(域名/模块),网上找了找,TP3.2开始取消了空模块。所以只能自己修改框架源码了。
----------有点晚,明天再写-----------
--------------------继续------------------
首先我随机打了一个模块名,TP就报错了,因为没有这个模块。然后我看到了如下错误:

然后我就看到了报错的行号,跟处理错误的地方。(tp5的报错真的比以前好啊 )。
就决定改这里了。
else if(Config::get('empty_module')){//添加的
define('MODULE_NAME', $module);
//设置空模块
$module = Config::get('empty_module');
// 初始化模块
$request->module($module);
$config = self::init($module);
// 模块请求缓存检查
$request->cache($config['request_cache'], $config['request_cache_expire'], $config['request_cache_except']);
}
加了个else if进去,empty_module是没有的,要自己在配置文件里添加。
define('MODULE_NAME', $module);这里为了在控制器里能够获取到之前要访问的空模块名,tp5把以前的MODULE_NAME取消了,可以了
$request->module()获取到,可是上面的更改代码中
// 初始化模块
$request->module($module);
这句就把module名更改为我要设置的空模块了,所以
$request->module();就获取不到用户要访问的模块名了。
要实现我要的功能,我还设置了空控制器,空方法。
这个跟其他是一样的。
空控制器:
因为我设置的空模块名是error,所以要就在error文件夹下的controller下 建一个Error.php。
空操作就是在在方法里面建立一个_empty()方法。
最后我的是这样的。

TP5不建议使用echo直接输出(我是为了测试方便。。。)。
这样就用户就可以随便访问,没有的模块就交给了Error模块的_empty处理了。
thinkphp5使用空模块的更多相关文章
- thinkphp5.0 空模块、空控制器、空方法
空模块 'exception_handle' => function(Exception $e){ // 参数验证错误 if ($e instanceof \think\exception\Va ...
- Thinkphp空操作空模块
空操作和空模块很有实用意义,他有些类似于PHP虚拟机自定义的404页面,利用这个机制我们可以更好的实现URL和错误页面的一些优化. 一.空模块: 很好理解,就是当你执行不存在模块的 ...
- ThinkPHP - 空模块+空操作
空操作 空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化. 例如,下面我们用空操作功能来实现一个城市切换的功能 ...
- Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)
原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问 ...
- thinkPHP 空模块和空操作、前置操作和后置操作 详细介绍(十四)
原文:thinkPHP 空模块和空操作.前置操作和后置操作 详细介绍(十四) 本章节:介绍 TP 空模块和空操作.前置操作和后置操作 详细介绍 一.空模块和空操作 1.空操作 function _em ...
- ThinkPHP3.2 中空方法、空控制器和空模块的设置
ThinkPHP3.2 中空方法.空控制器和空模块的设置 1.空方法设置 问题: 当你访问一个不存在的方法的时候: 如: http://localhost/test/index.php/Home/Us ...
- 【tp5】tp5实现空模块、空控制器、空操作的页面404跳转
写在最开始:本教程适用于tp5路由的[强制模式+半pathinfo模式+pathinfo模式],通用. 比网上的[通过路由去控制空模块更强力.更全面]. PS:路由控制空模块缺点:仅仅在[强制模式下才 ...
- TP3.2框架,实现空模块、空控制器、空操作的页面404替换||同步实现apache报错404页面替换
一,前言 一.1)以下代码是在TP3.0版本之后,URL的默认模式=>PATHINFO的前提下进行的.(通俗点,URL中index.php必须存在且正确) 代码和讲解如下: 1.空模块解决:ht ...
- thinkPHP 空模块和空操作、前置操作和后置操作 具体介绍(十四)
本章节:介绍 TP 空模块和空操作.前置操作和后置操作 具体介绍 一.空模块和空操作 1.空操作 function _empty($name){ $this->show("$name ...
随机推荐
- raw_input与input
raw_input 不管用户输入的是什么,最后打印的类型都会是str字符串类型 input 会根据用户的输入变换成相应的类型,但是需要注意的是我们用户在输入字符或者字符串的时候,需要给他们加上双引号, ...
- Django commands自定制
什么是Django Commands Django 对于命令的添加有一套规范,你可以为每个app 指定命令.通俗一点讲,比如在使用manage.py文件执行命令的时候,可以自定制自己的命令,来实现命令 ...
- vue.js基础
1,感谢菜鸟教程 2,第一个实例 <html> <head> <meta charset="utf-8"> <title>Vue 测 ...
- 「JavaScript面向对象编程指南」闭包
闭包 JS只有函数作用域,函数外为全局变量,函数内为局部变量 绿圆是函数fn的作用域,在这范围内可访问局部变量b和全局变量a,橙圆是fn内部函数inner的作用域,此范围内可访问自身作用域内的变量c, ...
- 关于el-upload上传
<el-upload class="edit-input-upload" :action="config.baseUrl + '/joinus/candidate/ ...
- Jmeter JDBC Connection Configuration 链接失败,提示Error preloading the connection pool
修改数据配置的连接数即可:修改为小一点 下面是oracle 配置连接的方式
- Scyther 论文相关资料整理
1.Scyther 的特点使用方法 Scyther可以提供轨迹的简单描述,方便分析协议可能出现的攻击和表现,使用Athena算法,该软件表现如下特点: 该软件有明确的终止,能工提供无限会话协议安全性的 ...
- 末学者笔记--rpm和yum软件管理(Linux)
一.rpm简介 这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Packa ...
- MIUI11系统怎么样启用root权限的教程
MIUI11系统如何启用了ROOT超级权限?做开发的人都知道,安卓机器有ROOT超级权限,一旦手机启用了root相关权限,可以实现更多的功能,举个例子做开发的人公司的营销部门的妹纸,使用较多营销工具都 ...
- centos 7.5+如何格式化硬盘
[root@k8s-node2 ~]# fdisk -l Disk /dev/sdb: bytes, sectors Units = sectors of * = bytes Sector size ...