改写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模板技术原理【一】
Jan 10 PHP
PHP分页函数代码(简单实用型)
Dec 02 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
php源码 fsockopen获取网页内容实例详解
Sep 24 PHP
PHP的反射机制实例详解
Mar 29 PHP
PHP laravel中的多对多关系实例详解
Jun 07 PHP
php中的依赖注入实例详解
Aug 14 PHP
Yii框架学习笔记之应用组件操作示例
Nov 13 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 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/01/11 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
Python的面向对象思想分析
2015/01/14 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
Python对List中的元素排序的方法
2018/04/01 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
Python截图并保存的具体实例
2021/01/14 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
实习生自我鉴定范文
2013/12/05 职场文书
早读课迟到检讨书
2014/09/25 职场文书
个人售房合同协议书
2016/03/21 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python