改写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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
php microtime获取浮点的时间戳
Feb 21 PHP
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
thinkPHP3.2简单实现文件上传的方法
May 16 PHP
php时间函数用法分析
May 28 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
May 30 PHP
基于php实现的验证码小程序
Dec 13 PHP
php通过header发送自定义数据方法
Jan 18 PHP
Laravel find in set排序实例
Oct 09 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 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不用递归实现无限分级的例子分享
2014/04/18 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
php实现异步数据调用的方法
2015/12/24 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
PHP云打印类完整示例
2016/10/15 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
js轮播图代码分享
2016/07/14 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
python数据分析数据标准化及离散化详解
2018/02/26 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
Python实现把类当做字典来访问
2019/12/16 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
python logging设置level失败的解决方法
2020/02/19 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
HTTP状态码详解
2021/03/18 杂记
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
建筑专业毕业生推荐信
2013/11/21 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
公务员检讨书
2014/11/01 职场文书
招商银行工作证明
2015/06/17 职场文书