扫一扫浏览

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

未结贴
0 239
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视频教程 635
TPFrame框架简介 586
TPFrame安装说明 491
TPFrame目录结构 440
TPFrame框架robot模块重磅来袭,内附2.1版本 431
tpframe基类介绍 398
TPFrame源码获取 388
tpframe之添加数据 376
TPFrame 2.1 beta版本正式发布,全部插件式开发到来 370
slide模块发布 350
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 8
关于tpframe的一点话题 6
为了框架的良性发展,tpframe招募成员了 4
thinkphp5自动完成操作,两次运行的详解 2
tpframe-curd操作之添加数据 2
tpframe能带给你的,让你快速搞定各服务端(api,pc,mobile,wechat)代码的框架 2
slide模块发布 2
透析thinkphp5升级版开发框架tpframe 2
微信公众号支付一些容易遇坑的地方 1
用了那么久的SVN,你都知道了些什么 1
爆料早知道:TPFrame v.2.2.0618版本已发布,点击去下载我有好想法