改写ThinkPHP的U方法使其路由下分页正常

2015-01-24信息快讯网

这篇文章主要介绍了改写ThinkPHP的U方法使其路由下分页正常的方法,需要的朋友可以参考下

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.ini实现PHP文件上传功能
php程序员应具有的7种能力小结
分享最受欢迎的5款PHP框架
PHP比你想象的好得多
简单说说PHP优化那些事(经验分享)
thinkphp的URL路由规则与配置实例
thinkphp文件引用与分支结构用法实例
PHP获取当前所在目录位置的方法
thinkphp模板的包含与渲染实例分析
thinkphp模板继承实例简述
Yii入门教程之目录结构、入口文件及路由设置
php 伪造ip以及url来路信息方法汇总
PHP魔术方法__GET、__SET使用实例
ThinkPHP提交表单时默认自动转义的解决方法
Thinkphp搭建包括JS多语言的多语言项目实现方法
Laravel 4 初级教程之视图、命名空间、路由
用 Composer构建自己的 PHP 框架之构建路由
跟我学Laravel之路由
Thinkphp中import的几个用法详细介绍
PHP反射使用实例和PHP反射API的中文说明
用PHP解决的一个栈的面试题
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
PHP中遇到BOM、<feff>编码导致json_decode函数无法解析问题
php foreach正序倒序输出示例代码
浅析ThinkPHP的模板输出功能
ThinkPHP中的系统常量和预定义常量集合
ThinkPHP实现多数据库连接的解决方法
ThinkPHP快速入门实例教程之数据分页
ThinkPHP框架实现session跨域问题的解决方法
ThinkPHP的模版中调用session数据的方法
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
php url路由入门实例
php处理restful请求的路由类分享
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
©2014-2024 dbsqp.com