ThinkPHP学习 volist标签高级应用之多重嵌套循环、隔行变色(转)
Action代码:
- public function index(){
 - $prod = I("get.prod_en");
 - $id = I("get.id", 0, "int");
 - if ($prod == ""){
 - $serviceProduct = array();//多重循环遍历的数组
 
- //数据保存在两张表中,这里通过循环初始化$serviceProduct数组
 - $service = M("product_class")->order("oid ASC")->select();
 - for ($i = 0; $i < count($service); $i++)
 - {
 - array_push($serviceProduct, array("srvName"=>$service[$i]["pc_cn"], "product"=>M("product")->where("prod_class_id=".$service[$i]["pcid"])->order("oid ASC")->select()));
 - }
 
- //如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋
 - 值,无论何种变量类型都统一使用assign赋值。
 - $this->assign("serviceProduct", $serviceProduct);
 - $this->display();
 - }else{
 - if ($id > 0){
 - $this->display("detail");
 - }else{
 - $this->assign('prod_en', $prod);
 - $clsList = M("question_class")->order("oid ASC")->select();
 - $this->assign('clsList', $clsList);
 - $qusList = M("question")->order("oid ASC")->select();
 - $this->assign('qusList', $qusList);
 - $this->display("list");
 - }
 - }
 - }
 
模板代码:
- <volist name="serviceProduct" id="sp" key="i">
 - <dl class="dlist odd">
 - <dt>{$sp.srvName}</dt>
 - <volist name="sp.product" id="pd" key="j">
 - <dd><a href="/index.php/question?prod_en={$pd.prod_en}">{$pd.prod_cn}</a></dd>
 - <if condition="$j lt count($sp['product'])">
 - <dd>|</dd>
 - </if>
 - </volist>
 - <if condition="count($sp['product']) EQ 0">
 - <dd> </dd>
 - </if>
 - </dl>
 - </volist>
 
当使用多重嵌套循环时,需要为每一个volist指定key值,通过
- <if condition="$j lt count($sp['product'])">
 
判断是否为数组中的最后一个元素。
Volist标签实现隔行变色
方法1:
- <volist name="newslist" id="vo" mod="2">
 - <li <eq name="mod" value="0"> style="background-color:#000;"</eq>><span>·<a href="{$vo.url}">{$vo.title}</a></span><span>{$vo.edittime|date="Y年m月d日",###}</span><span>{$vo.author}</span></li>
 - </volist>
 
volist 中的 mod 参数相当于指定一个频率,系统会将当前的实际记录对 mod 参数值求余(PHP中的%运算符)运算。而配合判断标签(如eq标签),就可以按照频率控制输出的数据或数据显示的格式。
方法2:
- <volist name="newslist" id="vo" key="k">
 - <li <if condition="$k%2== '0'"> style="background-color:#000;"</if >><span>·<a href="{$vo.url}">{$vo.title}</a></span><span> {$vo.edittime|date="Y年m月d日",###}</span><span>{$vo.author}</span></li>
 - </volist>
 
下面再列出一个 Volist 循环table里的tr、td的实例:
- <tr bgcolor="#FBFCF1">
 - <volist name="siteurl" id="site" mod="4">
 - <eq name="mod" value="0"></tr><tr bgcolor="#FBFCF1"></eq>
 - <td width="25%"><a href="{$site.url}" target="_blank">{$site.name}</a></td>
 - </volist>
 - </tr>
 
ThinkPHP学习 volist标签高级应用之多重嵌套循环、隔行变色(转)的更多相关文章
- PHP 学习笔记之一:thinkPHP的volist标签
		
Volist标签主要用于在模板中循环输出数据集或者多维数组. 属性: name : 必须,输出数据模板变量,后台提供的变量. id : 必须,是循环变量,可以随便定义,但是不能跟name相同. 举个栗 ...
 - ThinkPHP 模板 Volist 标签嵌套循环输出多维数组
		
ThinkPHP 中对 volist 标签嵌套使用可实现多维数组的输出. volist 嵌套使用 一般的二维数组,可以用 volist 标签直接循环输出.对于多维数组,则需要对其中的数组成员再次使用 ...
 - thinkphp中volist标签
		
volist标签 volist标签主要用于在模板中循环输出数据集或者多维数组 volist(name,id,offset,length,key,mod,empty) name(必须):要输出的数据模型 ...
 - Thinkphp的Volist标签
		
Volist标签主要用于在模板中循环输出数据集或者多维数组. volist标签(循环输出数据) 闭合 非闭合标签 属性 name(必须):要输出的数据模板变量 id(必须):循环变量 offset(可 ...
 - thinkphp 内置标签volist 控制换行
		
thinkphp 内置标签volist 控制换行 volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行 ...
 - ThinkPHP Volist标签
		
Volist标签主要用于在模板中循环输出数据集或者多维数组. volist标签(循环输出数据) 闭合 非闭合标签 属性 name(必须):要输出的数据模板变量 id(必须):循环变量 offset(可 ...
 - thinkphp <volist>标签中 <if> 判断的写法
		
thinkphp <volist>标签中 <if> 判断的写法 <volist name="data" id="vo"> & ...
 - thinkphp中view页面中的volist标签转化为原生php分析(多去看源代码,你会发现不仅简单,方便你理解,还节约时间)
		
thinkphp中view页面中的volist标签转化为原生php分析(多去看源代码,你会发现不仅简单,方便你理解,还节约时间) 一.总结 1.标签和原生php之间的关系:标签只是为了方便你使用,标签 ...
 - Thinkphp中的volist标签(查询数据集(select方法)的结果输出)用法简介
		
参考网址:http://camnpr.com/archives/1515.html 通常volist标签多用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数 ...
 
随机推荐
- Windows Phone 8 SQL Server CE 数据库
			
员工信息表 EmployeeTable.cs using System.Data.Linq.Mapping; using System.ComponentModel; namespace SQLSer ...
 - SPSS问题
			
1.SPSS中变量视图里的度量标准的三个选项是什么意思 Nominal名义变量是对数据进行分类得到的变量,如按性别分为男女,按年龄分为老.中.青: Ordinal顺序变量是对数据进行排序得到的变量,如 ...
 - Javascript 注意点
			
prototype有助于减少function的冲突. 闭包有助于避免全部变量. this, prototype有助于实例化多个对象. 函数 函数表达式
 - Billboard
			
hdu2795:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题意:给一个h*w的公告牌,h是高度,w是宽度,一个单位高度1为一行,然后会有一些公告贴上 ...
 - 【HDOJ】2289 Cup
			
二分.另外,圆台体积为v = PI*(r*r+r*R+R*R)*H/3.注意精度. #include <cstdio> #include <cmath> #define exp ...
 - BestCoder Round #51 (div.2)
			
明显是无良心的数学round= = 1000 Zball in Tina Town #include<iostream> #include<cstdio> #include&l ...
 - BZOJ 1050 [HAOI2006]旅行comf
			
1050: [HAOI2006]旅行comf Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1889 Solved: 976[Submit][Sta ...
 - 数学计数原理(Pólya,高精度):SGU 294 He's Circles
			
He's Circles He wrote n letters "X" and "E" in a circle. He thought that there ...
 - 数学(组合,容斥):COGS 1220. 盒子与球
			
1220. 盒子与球 ★ 输入文件:boxball.in 输出文件:boxball.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 现有r个互不相同的盒子和n ...
 - 图论(生成树):HDU 5631Rikka with Graph
			
Rikka with Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...