所先官方文档已经说明,在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
这些应该基本够用了吧,肯定还有其它的设置办法,如果有更好的,欢迎大家留言讨论。