扫一扫浏览

thinkphp5隐藏默认模块的一些问题

未结贴
0 1485
007未认证 2017-09-25 18:34:39
收藏

所先官方文档已经说明,在3.2以前设置默认模块 是不科学的,所以5.0已经把设置默认模块取消了,当然在官方文档里面写的也是很粗糙 ,所以我在这里给大家分享一些可行的方法,当然在不改源码的情况下,如果你要改源码当然也是可以实现的

第一种:单独模块

这块简单,官方文档也说得很清楚 ,只须要 在入口 文件加

define('BIND_MODULE','默认模块名');

第二种:多模块设计

很多人都怀恋tp3.2以前的多模块可设置默认模块的功能,确实那样给你带了很多的方便,不好的是现在没了,很多人都头疼怎么实现隐藏模块的功能呢

1)、不同模块不同入口

哈哈,这种就相当于多个单独模块,so easy

2)、只有一个入口

试想一下,要想控制默认“模块”,所先知道这是在模块级别之上的,所以肯定是在进入模块之前进行设置的,可在route.php里面进行设置,代码如下:

use \think\Request;
$pathinfo=strtolower(Request::instance()->pathinfo());
$pathinfo=$pathinfo=='backend'?$pathinfo.'/':$pathinfo;
if(!preg_match('/^backend\//',$pathinfo) && !preg_match('/^frontend\//',$pathinfo)){
	\think\Route::bind('frontend');
};

其实这里主要起作用的是\think\Route::bind('frontend');,上面多加一个!preg_match('/^frontend\//',$pathinfo),目的是让http://域名/index/abc跟http://域名/frontend/index/abc都能访问

3)、不同域名配置

例如:www.xxx.com是你的前端页面,admin.xxx.com是你的后台地址

这种配置简单,干净。先在route.php里面做如下配置:

return [
	'__domain__' => [
		'www'=> 'frontend',
		'admin' => 'backend',
		// 泛域名规则建议在最后定义
		'*' => 'frontend',
	]
];

当前这样配置是不起作用的,还须要在config.php配置文件里面把url_domain_deploy设置为true

这些应该基本够用了吧,肯定还有其它的设置办法,如果有更好的,欢迎大家留言讨论。

最近热帖 HOT TOPIC
thinkphp5隐藏默认模块的一些问题 1485
【全套视频】thinkphp5视频教程 1437
教你如果处理高并发数据不同步的问题php篇 1232
tpframe安装教程 1184
TPFrame框架robot模块重磅来袭,内附2.1版本 1178
tpframe新建主题 1155
父元素flex之后,子元素高度自适应问题 1133
tpframe应用目录结构 1103
slide模块发布 1092
thinkphp5自动完成操作,两次运行的详解 1082
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 3
thinkphp5自动完成操作,两次运行的详解 2
tpframe-curd操作之添加数据 2
tpframe能带给你的,让你快速搞定各服务端(api,pc,mobile,wechat)代码的框架 2
爆料早知道:TPFrame v3.2版本已更新我有好想法