改写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 相关文章推荐
UTF8编码内的繁简转换的PHP类
Jul 09 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 PHP
PHP让网站移动访问更加友好方法
Feb 14 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的引用计数机制
2013/06/14 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
JavaScript学习历程和心得小结
2010/08/16 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
vue 组件使用中的一些细节点
2018/04/25 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
理解python多线程(python多线程简明教程)
2014/06/09 Python
python集合类型用法分析
2015/04/08 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
Python编程中的文件操作攻略
2015/10/16 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
如何定义一个可复用的服务
2014/09/30 面试题
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
优秀党支部申报材料
2014/12/24 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
六一活动主持词
2015/06/30 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js