Thinkphp6隐藏应用名方法
Thinkphp6隐藏应用名方法,大部分人使用域名绑定应用、增加应用入口、入口文件绑定应用这些办法解决,本人研究了很久,找出了一个新的办法,分享给大家,不用域名绑定、创建新入口及配置apache或者nginx这些不友好的方式。多思考一些,可以找到更契合自己的办法,不同的人写出的代码是不一样的,希望更多人把代码写的更优雅。
1.使用多应用模式,需要安装多应用模式扩展think-multi-app。
composer require topthink/think-multi-app
2.配置config文件下的app.php文件,在app.php中配置(这里默认应用设置为index)
// 自动多应用模式 'auto_multi_app' => true, // 开启应用快速访问 'app_express' => true, // 默认应用 'default_app' => 'index',
3.这时,你可以将访问一个默认应用下的方法(页面),将默认应用index去掉,你可以发现,页面依然可以正常使用,灵感来源于此,重新写一个方法,可以起到url跳转的功能,跳转到默认应用下的页面时,将默认应用index隐藏掉。在app文件下common.php写入新的方法。
/*
*默认应用下url路径跳转
*url string 跳转路径
*$data array url参数
*$route 是否有路由
*return url地址 有路由返回封装路由链接,没有路由返回pathinfo链接
*/
function to($url ='',$data = [],$route=false){
if (false !== strpos($url, '://')) {
return $url;
}
$controller = strtolower(\think\facade\Request::controller());
$param = "";
$param2 = "";
if (0 === strpos($url, '/')) {
// 直接作为路由地址解析
$url = substr($url, 1);
} elseif (false !== strpos($url, '\\')) {
// 解析到类
$url = ltrim(str_replace('\\', '/', $url), '/');
} elseif ('' === $url) {
$url = $controller . '/' . \think\facade\Request::action();
} else {
$path = explode('/', $url);
$action = array_pop($path);
$controller = empty($path) ? $controller : array_pop($path);
$url = $controller . '/' . $action;
}
if(!empty($data)){
foreach ($data as $key => $val) {
$param.= "/" .$key ."/".$val;
$param2.= "/".$val;
}
}
$res = $route !==true ? "/".$url.$param.".".config("view.view_suffix"):"/".$url.$param2.".".config("view.view_suffix");
return $res;
} 4.也可以自己写个类似的,在页面中使用{:to("控制器/方法")},和url使用方法类似。这样可以生成隐藏应用名称,可以正常访问的URL地址。
上一篇:tp开发规范(自我总结2)
下一篇:暂无数据


