ThinkPHP框架的优良之处之一就是手册很好,但是我在开发的过程中还是遇到了一些问题,比如,这个标签嵌套问题!
下面是ThinkPHP框架手册提供的
模板引擎支持标签的多层嵌套功能,可以对标签库的标签指定可以嵌套。
系统内置的标签中,volist、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等标签都可以嵌套使用。例如:
<volist name="list" id="vo">
<volist name="vo['sub']" id="sub">
{$sub.name}
</volist>
</volist>
上面的标签可以用于输出双重循环。默认的嵌套层次是3级,所以嵌套层次不能超过3层,如果需要更多的层次可以指定TAG_NESTED_LEVEL配置参数,例如:
'TAG_NESTED_LEVEL' =>5
可以改变循环嵌套级别为5级。
后台代码如下:
public function left(){
$id = $_GET['id'];
$db_menu = M('admin_menu');
$menu = $db_menu->where('pid = '.$id)->select();
for($i = 0;$i< count($menu);$i++){
$pid = $menu[$i]['id'];
$menu[$i]['list']=$db_menu->where('pid ='.$pid)->select();
//dump($menu2);
}
$this->assign('menu',$menu);
$this->display();
}
前台代码如下:
<foreach name="menu" item="vo">
<div title="{$vo.name}" class="menu_list" style="padding:0px;overflow:auto;">
<ul>
<volist name="vo['list']" id="list">
<li><a href="javascript:void(0)" title="__GROUP__/{$list.url}" οnclick="showpage('__GROUP__/{$list.url}')">{$list.name}</a></li>
</volist>
</ul>
</div>
</foreach>
此段代码为菜单调用子菜单的二级嵌套,当然你也可以将 foreach 这个标签换成 volist 这个也是完全可以的。