改写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中文本数据翻页(留言本翻页)
Oct 09 PHP
使用PHP的日期与时间函数技巧
Apr 24 PHP
PHP 错误之引号中使用变量
May 04 PHP
php中base_convert()进制数字转换函数实例
Nov 20 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
php提取微信账单的有效信息
Oct 01 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
php快速导入大量数据的实例方法
Sep 23 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
超级简单的发送邮件程序
2006/10/09 PHP
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
jquery $(document).ready() 与window.onload的区别
2009/12/28 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
ExpressJS入门实例
2015/01/14 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
详解使用Node.js 将txt文件转为Excel文件
2017/07/05 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
Unix/Linux开发面试题
2016/08/16 面试题
矫正人员思想汇报
2014/01/08 职场文书
品牌服务方案
2014/06/03 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
政工师工作总结2015
2015/05/26 职场文书
活动简报范文
2015/07/22 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang