基于thinkphp美团网的组合多条件筛选,不好勿喷

浏览:9098 发布日期:2013/09/11 分类:技术分享
//配置路由规则
'URL_MODEL' => 2, // 2 (REWRITE 模式);
'URL_ROUTER_ON' => true,
'URL_ROUTE_RULES' => array(
'/^f_(\d+)_(\d+)_((\d+)-(\d+))$/' => 'Index/Index/index?cid=:1&lid=:2&price=:3'
)Class IndexAction extends CommonAction{

        Public function index(){
            $cid = isset($_GET['cid'])?(int)$_GET['cid'] : 0;
            $lid = isset($_GET['lid'])?(int)$_GET['lid'] : 0;
            $price = isset($_GET['price'])?$_GET['price'] : '0-0'; 
            //dump($_GET);die;
            $this->getLocality($cid,$lid,$price);
            $this->getCate($cid,$lid,$price);
            $this->getPrice($cid,$lid,$price);
            $this->display();
        }

        //读取分类
        Private function getCate($cid,$lid,$price){
            $allCate = $this->getCateSon();
            $pid = $this->getCatePid($cid);
            $arr = array();
            if($cid == 0){
                $arr[] = '<a class="active" href="'.U('/f_'.$cid.'_'.$lid.'_'.$price).'">全部</a>';
            }else{
                $arr[] = '<a href="'.U('/f_0'.'_'.$lid.'_'.$price).'">全部</a>';
            }
            
            foreach($allCate as $v){
                if($pid == $v['cid'] || $v['cid'] == $cid){
                    $arr[] = '<a class="active" href="'.U('/f_'.$cid.'_'.$lid.'_'.$price).'">'.$v['cname'].'</a>';
                }else{
                    $arr[] = '<a href="'.U('/f_'.$v["cid"].'_'.$lid.'_'.$price).'">'.$v['cname'].'</a>';
                }
            }//dump($arr);die;
            $this->assign('cate',$arr);
            if($pid == 0 && $cid != 0){
                    $sonCate = $this->getCateSon($cid);
                }else{
                    $sonCate = $this->getCateSon($pid);
            }
            if(empty($sonCate)) return;
            $arr = array();
            if($pid == 0){
                $arr[] = '<a class="active" href="'.U('/f_'.$cid.'_'.$lid.'_'.$price).'">全部</a>';
            }else{
                $arr[] = '<a href="'.U('/f_'.$pid.'_'.$lid.'_'.$price).'">全部</a>';
            }

            foreach ($sonCate as $v){
                if($v['cid'] == $cid){
                    $arr[] = '<a class="active" href="'.U('/f_'.$v["cid"].'_'.$lid.'_'.$price).'">'.$v['cname'].'</a>';
                }else{
                    $arr[] = '<a href="'.U('/f_'.$v["cid"].'_'.$lid.'_'.$price).'">'.$v['cname'].'</a>';
                }
            }//dump($sonCate);
            $this->assign('sonCate',$arr);
        }

        //读取地区
        Private function getLocality($cid,$lid,$price){
            $allLocality = $this->getLocalitySon();
            $pid = $this->getLocalityPid($lid);
            $arr = array();
            if($lid == 0){
                $arr[] = '<a class="active" href="'.U('/f_'.$cid.'_'.$lid.'_'.$price).'">全部</a>';
            }else{
                $arr[] = '<a href="'.U('/f_'.$cid.'_0'.'_'.$price).'">全部</a>';
            }
            foreach($allLocality as $v){
                if($pid == $v['lid'] || $v['lid'] == $lid){
                    $arr[] = '<a class="active" href="'.U('/f_'.$cid.'_'.$lid.'_'.$price).'">'.$v['lname'].'</a>';
                    //$arr[] = '<a class="active" href="'.U(GROUP_NAME."/Index/index",array('cid'=>$v['cid'])).'">'.$v['cname'].'</a>';
                }else{
                    $arr[] = '<a href="'.U('/f_'.$cid.'_'.$v["lid"].'_'.$price).'">'.$v['lname'].'</a>';
                }
            }//dump($arr);die;
            $this->assign('locality',$arr);
            if($pid == 0 && $lid != 0){
                    $sonLocality = $this->getLocalitySon($lid);
            }else{
                    $sonLocality = $this->getLocalitySon($pid);
            }
            if(empty($sonLocality)) return;
            $arr = array();
            if($pid == 0){
                $arr[] = '<a class="active" href="'.U('/f_'.$cid.'_'.$lid.'_'.$price).'">全部</a>';
            }else{
                $arr[] = '<a href="'.U('/f_'.$cid.'_'.$pid.'_'.$price).'">全部</a>';
            }

            foreach ($sonLocality as $v){
                if($v['lid'] == $lid){
                    $arr[] = '<a class="active" href="'.U('/f_'.$cid.'_'.$v["lid"].'_'.$price).'">'.$v['lname'].'</a>';
                }else{
                    $arr[] = '<a href="'.U('/f_'.$cid.'_'.$v["lid"].'_'.$price).'">'.$v['lname'].'</a>';
                }
            }
            $this->assign('sonLocality',$arr);
        }

        //根据传入的父级ID查找其子分类
        Private function getCateSon($pid=0){
            $where = array('pid'=>$pid,'display'=>1);
            return M('category')->where($where)->field('cid,cname')->order('sort asc')->select();
        }

        //根据cid获取其父级Id
        Private function getCatePid($cid){
            $where = array('cid'=>$cid,'display'=>1);
            return M('category')->where($where)->getField('pid');
        }

        //根据传入的父级ID查找其子地区
        Private function getLocalitySon($pid=0){
            $where = array('pid'=>$pid,'display'=>1);
            return M('locality')->where($where)->field('lid,lname')->order('sort asc')->select();
        }

        //根据cid获取其父级Id
        Private function getLocalityPid($lid){
            $where = array('lid'=>$lid,'display'=>1);
            return M('locality')->where($where)->getField('pid');
        }


        //设置价格筛选区间
        Private function getPrice($cid,$lid,$price){
            $key = '';
            if($cid == 0){
                $key = 'all';
            }else{
                $pid = $this->getCatePid($cid);
                $key = $pid?$pid:$cid;
            }
            $prices = C('price');
            $priceKey = $prices[$key];
            if($price == '0-0'){
                $arr[] = '<a class="active" href="'.U('/f_'.$cid.'_'.$lid.'_'.$price).'">全部</a>';
            }else{
                $arr[] = '<a href="'.U('/f_'.$cid.'_'.$lid.'_0-0').'">全部</a>';
            }

            foreach($priceKey as $v){
                if($price == $v[1]){
                    $arr[] = '<a class="active" href="'.U('/f_'.$cid.'_'.$lid.'_'.$v[1]).'">'.$v[0].'</a>';
                }else{
                    $arr[] = '<a href="'.U('/f_'.$cid.'_'.$lid.'_'.$v[1]).'">'.$v[0].'</a>';
                }
            }//dump($arr);
            $this->assign('price',$arr);
        }
    }
最佳答案
评论( 相关
后面还有条评论,点击查看>>