跟老姚学前端,课程体系更完善,10%基础 + 90%实战演练,快人一步学编程

扫一扫浏览

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

未结贴
2 10010
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视频教程 92888
父元素flex之后,子元素高度自适应问题 11294
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 10541
thinkphp5隐藏默认模块的一些问题 10011
api接口文档插件easydoc的基本用法,快速搞定接口文档 9792
如何收废品才能赚钱,有什么技巧?揭秘垃圾回收行业的一些规则 9730
PHP如何判断字符串是否为json格式 9633
omnicore rpc api中文手册【usdt】 9552
教你如果处理高并发数据不同步的问题php篇 9273
关于thinkphp5.0.x getshell漏洞的说明 9182
月度热议HOT COMMENTS
【全套视频】thinkphp5视频教程 75
tpframe 后续版本你希望有的功能是什么(分享贴) 12
权限那里怎么一登录别的账号就报错啊 9
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 5
tpframe6.0马上就要跟大家见面了,一次全新的升级 5
透析thinkphp5升级版开发框架tpframe 3
新增的管理员没有权限操作CMS模块。 3
爆料早知道: