Thinkphp的volist标签嵌套循环使用教程


Posted in PHP onJuly 08, 2014

本文较为详细的对ThinkPHP的volist标签嵌套的用法阐述如下:

首先,在Thinkphp开发手册中,有关于<volist>标签嵌套的解释说明。如下:

标签嵌套:

模板引擎支持标签的多层嵌套功能,可以对标签库的标签指定可以嵌套。
系统内置的标签中,volist(及其别名iterate)、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配置参数。
但是在Action中具体应该怎样赋值“list”呢?从说明中可以看出,list应该是一个二维数组,下边是一段测试代码,经测试可以使用。

$Baojia=new Model('baojia');
$Class=new Model('class');
$parent=$Class->select();   
foreach($parent as $n=> $val){
$parent[$n]['voo']=$Baojia->where('belongto=\''.$val['name'].'\'')->select();
}
$this->assign('list',$parent);
<volist name="list" id="vo">
    {$vo.name}<BR>
<volist name="vo['voo']" id="sub">
 {$sub.name}
</volist><BR>
</volist>

数据库中定义了两个表,一个是报价表,一个是分类表,实现的功能是像树形菜单一样,显示分类,每个分类下边是各个型号的报价。

代码主要功能是:

1.首先创建模型:

$Baojia=new Model('baojia');
$Class=new Model('class');

2.然后查询分类中的数据,这一步非常重要,因为我们知道,数据库查询返回的是类似表格的二维形式的数据,当我们取出单条数据时,相当与读取每行数据。当调用<volist>时,thinkphp后台会自动读取每一行数据。

$parent=$Class->select();

将报价中的数据存入$parent中,其中$n是$parent数组的序号,也就相当于存入$parent中的数据表,每行添加一个索引,这个索引指向属于这个分类的报价。

foreach($parent as $n=> $val){
$parent[$n]['voo']=$Baojia->where('belongto=\''.$val['name'].'\'')->select();   
}

3.最后:

$this->assign('list',$parent);

显示输出!

通过这个程序,可以更深入的理解<volist>标签,其实如果在数据库操作中,<volist>标签的name只能assign 成数据库表类型(当然也可以是数组型,因为数据库查询得到的数据本身就是数组型的),当我们在视图页面调用<volist>标签时,特别是嵌套调用时,始终记住每一层的name都必须是数组型的,像本程序中,最外层,<volist name="list" id="vo">这里的list就是我们最初定义的$parent,这个变量指向查询class表得到的数据表,里层<volist name="vo['voo']" id="sub">,也就是$parent[$n]['voo']所指向的数据表,也就是报价表中的相应数据。

通过这样的分析,条理已经很清晰了,举一反三就可以实现N重循环,当然如果需要更多的层次可以指定TAG_NESTED_LEVEL配置参数。

这样的话,就可以实现例如:国家->省->市->县->乡镇等多重循环

PHP 相关文章推荐
PHP文件上传原理简单分析
May 29 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
PHP实现的简单分页类及用法示例
May 06 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
Smarty模板常见的简单应用分析
Nov 15 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
Dec 15 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
php 浮点数比较方法详解
May 05 PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 PHP
PHP convert_uudecode()函数讲解
Feb 14 PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 #PHP
PHP的error_reporting错误级别变量对照表
Jul 08 #PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 #PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 #PHP
PHP生成短网址的3种方法代码实例
Jul 08 #PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
Jul 08 #PHP
php中函数前加&amp;符号的作用分解
Jul 08 #PHP
You might like
php中转义mysql语句的实现代码
2011/06/24 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
vue3.0 上手体验
2020/09/21 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
浅谈python对象数据的读写权限
2016/09/12 Python
Python 多线程Threading初学教程
2017/08/22 Python
python实现事件驱动
2018/11/21 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Django视图扩展类知识点详解
2019/10/25 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
大学毕业生的自我鉴定
2013/11/30 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
Vue Element plus使用方法梳理
2022/12/24 Vue.js