扫一扫浏览

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

未结贴
0 363
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
TPFrame框架简介 988
【全套视频】thinkphp5视频教程 877
TPFrame安装说明 847
TPFrame目录结构 739
tpframe之添加数据 686
TPFrame源码获取 667
tpframe基类介绍 655
TPFrame框架robot模块重磅来袭,内附2.1版本 610
TPFrame用户协议 604
TPFrame数据字典 587
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 9
关于tpframe的一点话题 6
为了框架的良性发展,tpframe招募成员了 4
thinkphp5自动完成操作,两次运行的详解 2
tpframe-curd操作之添加数据 2
tpframe能带给你的,让你快速搞定各服务端(api,pc,mobile,wechat)代码的框架 2
slide模块发布 2
透析thinkphp5升级版开发框架tpframe 2
tpframe v2.2自动生成文档easydoc插件已发布 2
微信公众号支付一些容易遇坑的地方 1
爆料早知道:TPFrame v3.0已经发布,赶快下载体验吧!我有好想法