改写ThinkPHP的U方法使其路由下分页正常


Posted in PHP onJuly 02, 2014

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);
 }

后面加入以下代码

/*
* tp开启路由之后下一页路由失效问题 分页类URL组装
*/
 //如果开启路由
 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);//取参数
        //dump($tempzlg); 
        if($tempzlg){
          if(C('APP_SUB_DOMAIN_DEPLOY')){
            $zlgurl = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url); //url替换为路由规则 
          }else{
            $zlgurl = str_replace($zlig,$zhaolg,$url); //url替换为路由规则 
          }                
          //注 /s/:c/c/4/p/__PAGE__
          //dump($zlgurl);
          $url = str_replace($lg.'/'.$tempzlg,'',$zlgurl);//url替换路由规则参数
                        
        }  
      }else{//分析规则 不带参数
        if(C('APP_SUB_DOMAIN_DEPLOY')){
          $url = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url);//url替换为路由规则
        }else{
          $url = str_replace($zlig,$zhaolg,$url);//url替换为路由规则 
        }          
      }
    }
  }
 }

至此问题得以解决!

PHP 相关文章推荐
2.PHP入门
Oct 09 PHP
?算你??的 PHP 程式大小
Dec 06 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
ThinkPHP快速入门实例教程之数据分页
Jul 01 PHP
Yii框架form表单用法实例
Dec 04 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
php简单图像创建入门实例
Jun 10 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
PHP的PDO连接讲解
Jan 24 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 PHP
PHP反射使用实例和PHP反射API的中文说明
Jul 02 #PHP
用PHP解决的一个栈的面试题
Jul 02 #PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 #PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 #PHP
php foreach正序倒序输出示例代码
Jul 01 #PHP
浅析ThinkPHP的模板输出功能
Jul 01 #PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 #PHP
You might like
php 信息采集程序代码
2009/03/17 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
vue cli 全面解析
2018/02/28 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
python实现关键词提取的示例讲解
2018/04/28 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
python kafka 多线程消费者&手动提交实例
2019/12/21 Python
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
西部世纪面试题
2014/12/05 面试题
领导干部培训感言
2014/01/23 职场文书
作文批改评语大全
2014/04/23 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
学校标语大全
2014/06/19 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书