ThinkPHP采用<volist>实现三级循环代码实例
author:一佰互联 2019-04-29   click:177

本文以实例描述了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){ 
 return true; 
 } 
 else return false; 
}

2.绑定volist标签:

 $result=D("Learning") ->MakeTree(0,1); 
 //dump($result);
 $this->assign("list",$result);

3.模板部分:

<select name="category" id="select" class="text mr5"> 
 <volist name="list" id="vo"> 
  <option name="cid" value="{$vo.id}" <eq name="vo.id" value="getid">selected</eq> >{$vo.alias}</option>  
 <volist name="vo["child"]" id="child"> 
  <option name="cid" value="{$child.id}" <eq name="child.id" value="getid">selected</eq> >--{$child.alias}</option>  
  <volist name="child["grandchild"]" id="grand"> 
  <option name="cid" value="{$grand.id}" <eq name="grand.id" value="getid">selected</eq> >---{$grand.alias}</option>  
  </volist> 
 </volist> 
 </volist> 
 </select>