thinkphp volist三级循环

1. //三级循环 需要三维数组
  function  MakeTree($pid,$level) { 
   $map['pid'] = $pid; 
  $map['level'] = $level; 
  $result = $this->where($map)->order('rank ASC')->findall(); 
  if($result){ 
   foreach ($result as $key => $value){ 
    $title = $value['alias']; 
    $list[$title]['id']    = $value['id']; 
    $list[$title]['pid']    = $value['pid']; 
    $list[$title]['alias']  = $value['alias']; 
    $list[$title]['title'] = $value['title']; 
    $list[$title]['level'] = $value['level']; 
    $list[$title]['state'] = $value['state']; 
    $list[$title]['rank'] = $value['rank']; 
    if($value['level']<=3)...{ 
     $list[$title]['child'] = $this->_MakeSonTree($value['id']);  
    }
   }
  }
  return $list; 
  
 } 
  
  
  function _MakeSonTree($pid) ...{ 
  $map['pid'] = $pid; 
  $result = $this->where($map)->order('rank ASC')->findall(); 
  if($result)...{ 
   foreach ($result as $key => $value)...{ 
    $title = $value['alias']; 
    $list[$title]['id']    = $value['id']; 
    $list[$title]['pid']    = $value['pid']; 
    $list[$title]['alias']  = $value['alias']; 
    $list[$title]['title'] = $value['title']; 
    $list[$title]['level'] = $value['level']; 
    $list[$title]['state'] = $value['state']; 
    $list[$title]['rank'] = $value['rank']; 
     if($this->haschild($value['id']))...{     //先判断是否有第三级子类,最后的数组形如$result['child']['grandchild'];
      $list[$title]['grandchild']=$this->_MakeSonTree($value['id']); 
      }
   }
  }
  return $list; 
 }
  
 function haschild($id)...{ 
  $result=D('LearningChannel')->where("pid=".$id)->find(); 
  if($result)...{ 
   returntrue; 
   }
   elsereturnfalse; 
  }
2.绑定volist标签
   $result=D('Learning') ->MakeTree(0,1); 
   //dump($result);  
   $this->assign('list',$result);
3.模板
                    <selectname="category"id="select"class="text mr5">
                      <volistname="list"id="vo">
                       <optionname="cid"value="{$vo.id}" <eq name="vo.id"value="getid">selected</eq> >{$vo.alias}</option>   
                         <volistname="vo['child']"id="child">
                              <optionname="cid"value="{$child.id}" <eq name="child.id"value="getid">selected</eq> >--{$child.alias}</option>   
                                  <volistname="child['grandchild']"id="grand">
                              <optionname="cid"value="{$grand.id}" <eq name="grand.id"value="getid">selected</eq> >---{$grand.alias}</option>   
                                  </volist>
                         </volist>
                      </volist>
                     </select>

你可能感兴趣的:(thinkphp)