Welcome 微信登录

首页 / 网页编程 / PHP / ThinkPHP采用<volist>实现三级循环代码实例

本文以实例描述了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>