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)
下一篇:暂无数据