改写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下将图片以二进制存入mysql数据库中并显示的实现代码
May 27 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 PHP
php防止SQL注入详解及防范
Nov 12 PHP
跟我学Laravel之视图 & Response
Oct 15 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
如何让CI框架支持service层
Oct 29 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
PHP解析url并得到url参数方法总结
Oct 11 PHP
PHP PDOStatement::bindParam讲解
Jan 30 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
jQuery实现简单QQ聊天框
2020/08/27 jQuery
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python实用日期时间处理方法汇总
2015/05/09 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
Python实现Kmeans聚类算法
2020/06/10 Python
对python中的pop函数和append函数详解
2018/05/04 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
django的model操作汇整详解
2019/07/26 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
企业安全生产标语
2014/06/06 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
2014国庆节标语口号
2014/09/19 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
python turtle绘图
2022/05/04 Python
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS