3.1.3多筛选分页路由

jerry thinkphp 2015年11月19日 收藏
分享一个3.1.3多筛选分页路由,我是新手,如果不正确的地方望大家使劲喷
分享一个3.1.3多筛选分页路由,我是新手,如果不正确的地方望大家使劲喷
首先设置路由规则,因为我的是筛选是类所以路由设置为
  1.  '/^list\/(\d+)_(\d+)_(\d+)_(\d+)_(\d+)$/' => 'Index/List/index?r=:1&t=:2&n=:3&y=:4&p=:5',
然后方法中写
  1.   $this->= isset($_GET['p'])?(int)$_GET['p'] : 1; 
设置初始的页码,其他的按照正常的查询写就可以了
前台
  1. <a href="{:U('/list/'.$v['id'].'_'.$t.'_'.$n.'_'.$y.'_'.$p)}">{$v.region}</a>
然后修改分页类,我是又另外复制了show方法
  1.     /**
  2.      * 分页显示输出
  3.      * @access public
  4.      */
  5.     public function routeShow() {
  6.         if(0 == $this->totalRows) return '';
  7.         $p              =   $this->varPage;
  8.         $nowCoolPage    =   ceil($this->nowPage/$this->rollPage);

  9.         // 分析分页参数
  10.         if($this->url){
  11.             $depr       =   C('URL_PATHINFO_DEPR');
  12.             $url        =   rtrim(U('/'.$this->url,'',false),$depr).$depr.'__PAGE__';
  13.         }else{
  14.             if($this->parameter && is_string($this->parameter)) {
  15.                 parse_str($this->parameter,$parameter);
  16.             }elseif(is_array($this->parameter)){
  17.                 $parameter      =   $this->parameter;
  18.             }elseif(empty($this->parameter)){
  19.                 unset($_GET[C('VAR_URL_PARAMS')]);
  20.                 $var =  !empty($_POST)?$_POST:$_GET;
  21.                 if(empty($var)) {
  22.                     $parameter  =   array();
  23.                 }else{
  24.                     $parameter  =   $var;
  25.                 }
  26.             }
  27.               $parameter[$p]  =   '__PAGE__';
  28.             $parameter=implode('_',$parameter);
  29.             $url      =   U('/list/'.$parameter);
  30.         }
  31.         //上下翻页字符串
  32.         $upRow          =   $this->nowPage-1;
  33.         $downRow        =   $this->nowPage+1;
  34.         if ($upRow>0){
  35.             $upPage     =   "<a href='".str_replace('__PAGE__',$upRow,$url)."'>".$this->config['prev']."</a>";
  36.         }else{
  37.             $upPage     =   '';
  38.         }

  39.         if ($downRow <= $this->totalPages){
  40.             $downPage   =   "<a href='".str_replace('__PAGE__',$downRow,$url)."'>".$this->config['next']."</a>";
  41.         }else{
  42.             $downPage   =   '';
  43.         }
  44.         // << < > >>
  45.         if($nowCoolPage == 1){
  46.             $theFirst   =   '';
  47.             $prePage    =   '';
  48.         }else{
  49.             $preRow     =   $this->nowPage-$this->rollPage;
  50.             $prePage    =   "<a href='".str_replace('__PAGE__',$preRow,$url)."' ><<</a>"; //上5页改成了 <<
  51.             $theFirst   =   "<a href='".str_replace('__PAGE__',1,$url)."' >".$this->config['first']."</a>";
  52.         }
  53.         if($nowCoolPage == $this->coolPages){
  54.             $nextPage   =   '';
  55.             $theEnd     =   '';
  56.         }else{
  57.             $nextRow    =   $this->nowPage+$this->rollPage;
  58.             $theEndRow  =   $this->totalPages;
  59.             $nextPage   =   "<a href='".str_replace('__PAGE__',$nextRow,$url)."' >>></a>";    // 下5页 改成了 >>
  60.             $theEnd     =   "<a href='".str_replace('__PAGE__',$theEndRow,$url)."' >".$this->config['last']."</a>";
  61.         }
  62.         // 1 2 3 4 5
  63.         $linkPage = "";
  64.         for($i=1;$i<=$this->rollPage;$i++){
  65.             $page       =   ($nowCoolPage-1)*$this->rollPage+$i;
  66.             if($page!=$this->nowPage){
  67.                 if($page<=$this->totalPages){
  68.                     $linkPage .= "<a href='".str_replace('__PAGE__',$page,$url)."'>".$page."</a>"; //去掉了此处的空格
  69.                 }else{
  70.                     break;
  71.                 }
  72.             }else{
  73.                 if($this->totalPages != 1){
  74.                     // 当前页
  75.                     $linkPage .= " <span class='current'>".$page."</span>";
  76.                 }
  77.             }
  78.         }
  79.         $pageStr     =   str_replace(
  80.             array('%header%','%nowPage%','%totalRow%','%totalPage%','%upPage%','%downPage%','%first%','%prePage%','%linkPage%','%nextPage%','%end%'),
  81.             array($this->config['header'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd),$this->config['theme']);
  82.         return $pageStr;
  83.     }
对链接重组
最后,如果没有筛选的链接路由
  1.     '/^list\/(\d+)$/' => 'Index/List/index?p=:1',
有不明白的在评论中留,尽力解答