扫一扫浏览

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

未结贴
2 2219
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
父元素flex之后,子元素高度自适应问题 2560
thinkphp5隐藏默认模块的一些问题 2219
关于thinkphp5.0.x getshell漏洞的说明 1893
【全套视频】thinkphp5视频教程 1859
教你如果处理高并发数据不同步的问题php篇 1782
移动web资源整理,你值得收藏的干货 1764
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 1686
PHP如何判断字符串是否为json格式 1657
tpframe新建主题 1603
omnicore rpc api中文手册【usdt】 1573
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 5
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
thinkphp5自动完成操作,两次运行的详解 2
thinkphp5隐藏默认模块的一些问题 2
tpframe-curd操作之添加数据 2
爆料早知道:Tcms微信、百度小程序、微信公众号功能已全部上线我有好想法