改写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 相关文章推荐
PHP 输出缓存详解
Jun 20 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
May 07 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
Sep 30 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
PHP中copy on write写时复制机制介绍
May 13 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
php比较两个字符串长度的方法
Jul 13 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP array_shift()用法实例分析
Jan 07 PHP
PHP中关于php.ini参数优化详解
Feb 28 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读取超大文件的实例代码
2012/04/01 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
php中OR与|| AND与&&的区别总结
2013/10/26 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
Python中import机制详解
2017/11/14 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
Python实现中一次读取多个值的方法
2018/04/22 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python中shell执行知识点
2020/05/06 Python
Python extract及contains方法代码实例
2020/09/11 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
2020/09/23 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
《鸟的天堂》教学反思
2014/02/27 职场文书
小班幼儿评语大全
2014/04/30 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
中学生打架检讨书
2014/10/13 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
工程催款通知书
2015/04/17 职场文书
女性励志书籍推荐
2019/08/19 职场文书