改写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 ADODB使用方法集锦
Mar 25 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
May 15 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 PHP
thinkPHP实现将excel导入到数据库中的方法
Apr 22 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
PHP get_html_translation_table()函数用法讲解
Feb 16 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
PHP实时显示输出
2008/10/02 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
PHP中文编码小技巧
2014/12/25 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
JavaScript toFixed() 方法
2010/04/15 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
Python的subprocess模块总结
2014/11/07 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
python爬取youtube视频的示例代码
2021/03/03 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
毕业生求职自荐书范文
2014/03/27 职场文书
群众路线领导对照材料
2014/08/23 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python
如何Tomcat中使用ipv6地址
2022/05/06 Servers