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创建动态图像
Oct 09 PHP
PHP面向对象分析设计的61条军规小结
Jul 17 PHP
php函数的常用方法及注意之处小结
Jul 10 PHP
PHP中date()日期函数有关参数整理
Jul 19 PHP
twig模板获取全局变量的方法
Feb 05 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 PHP
Laravel 实现添加多语言提示信息
Oct 25 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 PHP
PHP执行linux命令6个函数代码实例
Nov 24 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
分页栏的web标准实现
2011/11/01 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
vue cli 全面解析
2018/02/28 Javascript
python中ASCII码和字符的转换方法
2018/07/09 Python
python3判断url链接是否为404的方法
2018/08/10 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
pytest中文文档之编写断言
2019/09/12 Python
Python request使用方法及问题总结
2020/04/26 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
逻辑链路控制协议
2016/10/01 面试题
销售经理岗位职责
2014/03/16 职场文书
小班评语大全
2014/05/04 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
党支部鉴定意见
2015/06/02 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android