当前位置:首页 > CMS教程 > Thinkphp > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-09 10:44:05 浏览: 评论:0 

这篇文章主要介绍了改写ThinkPHP的U方法使其路由下分页正常的方法,需要的朋友可以参考下,ThinkPHP3.1.3在启用路由的情况下,其分页地址不是路由的地址,由于thinkphp3.2.1的代码也没有修复,很多人都遇到了这一问题,本文采纳olcms的修改方法解决这一问题,特别感谢phper jack对此做出的贡献,具体解决办法是修改ThinkPHP的functions.php的U方法,在287行左右:

  1. if(!emptyempty($vars)) {  
  2. // 添加参数 
  3. foreach ($vars as $var => $val){ 
  4. if('' !== trim($val)) 
  5. $url .= $depr . $var . $depr . urlencode($val); 

后面加入以下代码

  1. /* 
  2. * tp开启路由之后下一页路由失效问题 分页类URL组装 
  3. */ 
  4.  //如果开启路由 
  5.  if(C('URL_ROUTER_ON')){         
  6.   foreach (C('URL_ROUTE_RULES'as $zhaolg => $zlig){//遍历路由             
  7.     if(strstr('/'.GROUP_NAME.$url,$zlig)){//从网址中找路由规则 
  8.       $lg = strstr($zhaolg,'/:');//分析规则 带参数? 
  9.       if($lg){//如果规则带参数               
  10.         $tempzlg = str_replace('/:','',$lg);//取参数 
  11.         //dump($tempzlg);  
  12.         if($tempzlg){ 
  13.           if(C('APP_SUB_DOMAIN_DEPLOY')){ 
  14.             $zlgurl = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url); //url替换为路由规则  
  15.           }else
  16.             $zlgurl = str_replace($zlig,$zhaolg,$url); //url替换为路由规则  
  17.           }                 
  18.           //注 /s/:c/c/4/p/__PAGE__ 
  19.           //dump($zlgurl); 
  20.           $url = str_replace($lg.'/'.$tempzlg,'',$zlgurl);//url替换路由规则参数 
  21.                           
  22.         }   
  23.       }else{//分析规则 不带参数 
  24.         if(C('APP_SUB_DOMAIN_DEPLOY')){ 
  25.           $url = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url);//url替换为路由规则 
  26.         }else
  27.           $url = str_replace($zlig,$zhaolg,$url);//url替换为路由规则  
  28.         }           
  29.       } 
  30.     } 
  31.   } 
  32.  } 

至此问题得以解决!

Tags: ThinkPHP路由分页 U方法

分享到: