ThinkPHP采用<volist>实现三级循环代码实例

 更新时间:2014年07月18日 15:59:48   投稿:shichen2014  
这篇文章主要介绍了ThinkPHP采用<volist>实现三级循环代码实例,通过实例加深读者对<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>

相关文章

  • php 读取输出其他文件的实现方法

    php 读取输出其他文件的实现方法

    下面小编就为大家带来一篇php 读取输出其他文件的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • Laravel 5.4因特殊字段太长导致migrations报错的解决

    Laravel 5.4因特殊字段太长导致migrations报错的解决

    这篇文章主要给大家介绍了关于Laravel 5.4因特殊字段太长导致migrations报错的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。
    2017-10-10
  • 详解PHP中的序列化、反序列化操作

    详解PHP中的序列化、反序列化操作

    本篇文章主要介绍了PHP中的序列化、反序列化操作,可以将一个变量的数据"转换为"字符串,目的是将该字符串存储在本地。相反的行为成为反序列化。
    2017-03-03
  • smarty模板中使用get、post、request、cookies、session变量的方法

    smarty模板中使用get、post、request、cookies、session变量的方法

    这篇文章主要介绍了smarty模板中使用get、post、request、cookies、session变量的方法,需要的朋友可以参考下
    2014-04-04
  • PHP微信开发之模板消息回复

    PHP微信开发之模板消息回复

    这篇文章主要为大家详细介绍了PHP微信开发之简单实现模板消息回复 的相关资料,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • thinkphp整合微信支付代码分享

    thinkphp整合微信支付代码分享

    这篇文章主要为大家分享了thinkphp整合微信支付代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • PhpStorm本地断点调试的方法步骤

    PhpStorm本地断点调试的方法步骤

    php代码在调试时,经常是print_r或者var_dump来断点,但是当项目较为复杂的情况下,这么做效率就非常低下了,断点调试就非常好的解决了这个问题,这篇文章主要介绍了PhpStorm本地断点调试的方法步骤,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • PHP常见漏洞攻击分析

    PHP常见漏洞攻击分析

    本文给大家介绍php常见漏洞攻击相关知识,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-02-02
  • ThinkPHP中Widget扩展的两种写法及调用方法详解

    ThinkPHP中Widget扩展的两种写法及调用方法详解

    这篇文章主要介绍了ThinkPHP中Widget扩展的两种写法及调用方法,详细分析了Widget扩展的写法及相应的调用技巧,需要的朋友可以参考下
    2017-05-05
  • Laravel框架生命周期与原理分析

    Laravel框架生命周期与原理分析

    这篇文章主要介绍了Laravel框架生命周期与原理,结合实例形式总结分析了Laravel框架针对用户请求响应的完整运行周期、流程、原理,需要的朋友可以参考下
    2018-06-06

最新评论