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 ...
随机推荐
- c++ 常用头文件
1.#include<iostream> iostream 的意思是输入输出流.#include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头 ...
- Appnium-API-Execute Mobile Command
Execute Mobile Command Java:driver.executeScript("mobile: scroll", ImmutableMap.of("d ...
- ABP学习之路--切换mysql数据库
1.添加mysql相关引用 注意,使用最新版本会导数据迁移时出错 2.修改链接字符串: <add name="Default" connectionString=" ...
- (转)python 开发 sqlite 绝对完整
'''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不 ...
- 使用HDFS完成wordcount词频统计
任务需求 统计HDFS上文件的wordcount,并将统计结果输出到HDFS 功能拆解 读取HDFS文件 业务处理(词频统计) 缓存处理结果 将结果输出到HDFS 数据准备 事先往HDFS上传需要进行 ...
- 软件工程作业-(third)
1.选题目(1) 最大连续子数组和(最大子段和) 问题:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值. ...
- 【python】使用flask制作小型页面的关键点总结
目录结构 app.py web代码 store.db 存储信息的轻量数据库,用的sqlite3 schema.sql 数据库的初始化建表语句 settings.cfg 配置信息 static/styl ...
- 2-3、配置Filebeat
配置Filebeat 提示:Filebeat modules为常见的日志格式提供了最快的入门操作. 如果要使用Filebeat模块,请跳过本节,包括剩余的入门步骤,并直接转到快速入门:Quick st ...
- 服务器端 less的安装
一. 安装 npm apt-get install npm 二. 安装less 在服务器端安装 LESS 的最简单方式就是通过 npm(node 的包管理器), 像这样: $ npm install ...
- java.lang.IllegalArgumentException: Invalid source 'classpath:spring-mvc.xml'
今天在跑项目时遇到java.lang.IllegalArgumentException: Invalid source 'classpath:spring-mvc.xml'报错,自己也是摸索了很久,一 ...