程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 改寫ThinkPHP的U方法使其路由下分頁正常

改寫ThinkPHP的U方法使其路由下分頁正常

編輯:關於PHP編程

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替換為路由規則 
        }          
      }
    }
  }
 }

至此問題得以解決!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved