改写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 相关文章推荐
Search Engine Friendly的URL设计
Oct 09 PHP
PHP脚本数据库功能详解(中)
Oct 09 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
使用php实现网站验证码功能【推荐】
Feb 09 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
浅析PHP数据导出知识点
Feb 17 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
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
php无限极分类递归排序实现方法
2014/11/11 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
基于Two.js实现星球环绕动画效果的示例
2017/11/06 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vue和better-scroll实现列表左右联动效果详解
2019/04/29 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
浅析Python编写函数装饰器
2016/03/18 Python
python使用代理ip访问网站的实例
2018/05/07 Python
python一键去抖音视频水印工具
2018/09/14 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
python 类之间的参数传递方式
2019/12/20 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
往来会计岗位职责
2013/12/19 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
幼儿园大班教师评语
2019/06/21 职场文书