改写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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
MySQL GBK→UTF-8编码转换
May 24 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
PHP5中虚函数的实现方法分享
Apr 20 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
测试php函数的方法
Nov 13 PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 PHP
PHP的命令行命令使用指南
Aug 18 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
Apr 26 PHP
laravel框架中间件 except 和 only 的用法示例
Jul 12 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 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/09/04 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
javascript常用方法汇总
2014/12/02 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
python 有效的括号的实现代码示例
2019/11/11 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
Django自带的用户验证系统实现
2020/12/18 Python
html5启动原生APP总结
2020/07/03 HTML / CSS
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
支行行长竞聘演讲稿
2014/05/15 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
中秋节祝酒词
2015/08/12 职场文书
《检阅》教学反思
2016/02/22 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
Python语言内置数据类型
2022/02/24 Python
Python中字符串对象语法分享
2022/02/24 Python
MySQL插入数据与查询数据
2022/03/25 MySQL