ThinkPHP3.1.3在启用路由的情况下,其分页地址不是路由的地址,由于thinkphp3.2.1的代码也没有修复,很多人都遇到了这一问题,本文采纳olcms的修改方法解决这一问题,特别感谢phper jack对此做出的贡献,具体解决办法是修改ThinkPHP的functions.php的U方法,在287行左右: if(!empty($vars)) { // 添加参数 foreach ($vars as $var => $val){ if('' !== trim($val)) $url .= $depr . $var . $depr . urlencode($val); } 在使用ThinkPHP框架时,尤其是版本3.1.3及3.2.1,开发者可能会遇到一个问题:在启用路由功能后,分页链接仍然指向原始的非路由地址,而不是期望的路由地址。这个问题源于框架内默认的URL生成方法,即U方法,没有正确处理这种情况。在本文中,我们将探讨如何通过修改`functions.php`文件中的U方法来解决这个问题。 我们来看U方法在`functions.php`中的关键部分,大约在287行: ```php if (!empty($vars)) { // 添加参数 foreach ($vars as $var => $val) { if ('' !== trim($val)) { $url .= $depr . $var . $depr . urlencode($val); } } } ``` 这个代码块负责将URL参数添加到生成的URL中。为了使分页在路由模式下正常工作,我们需要在这些代码之后加入新的逻辑,处理路由规则。 当`URL_ROUTER_ON`配置项设置为true,即开启路由时,我们需要遍历`URL_ROUTE_RULES`数组,这个数组存储了所有的路由规则。代码如下: ```php // 如果开启路由 if (C('URL_ROUTER_ON')) { foreach (C('URL_ROUTE_RULES') as $zhaolg => $zlig) { // 遍历路由 if (strstr('/'.GROUP_NAME.$url, $zlig)) { // 从网址中找路由规则 $lg = strstr($zhaolg, '/:'); // 分析规则,带参数? if ($lg) { // 如果规则带参数 $tempzlg = str_replace('/:','', $lg); // 取参数 if ($tempzlg) { // 是否启用子域名部署 if (C('APP_SUB_DOMAIN_DEPLOY')) { $zlgurl = str_replace($zlig, $zhaolg, '/'.GROUP_NAME.$url); } else { $zlgurl = str_replace($zlig, $zhaolg, $url); } // 替换路由规则参数 $url = str_replace($lg.'/'.$tempzlg, '', $zlgurl); } } else { // 分析规则,不带参数 if (C('APP_SUB_DOMAIN_DEPLOY')) { $url = str_replace($zlig, $zhaolg, '/'.GROUP_NAME.$url); } else { $url = str_replace($zlig, $zhaolg, $url); } } } } } ``` 这段新代码的作用是检查当前URL是否匹配任何路由规则,并根据匹配的规则对URL进行替换。如果规则带有参数,它会找到并替换参数部分。如果规则不带参数,它会直接替换整个URL。这样,分页链接就能正确地遵循路由规则,生成正确的分页URL。 通过以上修改,分页在启用路由的ThinkPHP项目中将能够正常工作。这个解决方案来自于olcms的修改方法,并得到了phper jack的贡献。确保在你的项目中应用这些更改,并进行测试,以确认分页链接现在按照预期工作。 此外,了解ThinkPHP的URL路由机制对于优化应用程序的URL结构和提升用户体验至关重要。路由允许开发者自定义URL模式,使其更符合业务逻辑,同时也便于搜索引擎优化(SEO)。理解如何配置和使用路由规则,以及如何与分页结合,是每个ThinkPHP开发者需要掌握的关键技能。通过实践和研究相关文档,如《thinkphp的URL路由规则与配置实例》、《ThinkPHP5 URL和路由的功能详解与实例》等,你可以更深入地理解和运用这一功能。
- 粉丝: 5
- 资源: 927
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 学校课程软件工程常见10道题目以及答案demo
- javaweb新手开发中常见的目录结构讲解
- 新手小白的git使用的手册入门学习demo
- 基于Java观察者模式的info-express多对多广播通信框架设计源码
- 利用python爬取豆瓣电影评分简单案例demo
- 机器人开发中常见的几道问题以及答案demo
- 基于SpringBoot和layuimini的简洁美观后台权限管理系统设计源码
- 实验报告五六代码.zip
- hdw-dubbo-ui基于vue、element-ui构建开发,实现后台管理前端功能.zip
- (Grafana + Zabbix + ASP.NET Core 2.1 + ECharts + Dapper + Swagger + layuiAdmin)基于角色授权的权限体系.zip