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方法返回的结果是一个二维数 ...
随机推荐
- [POJ 1742] Coins 【DP】
题目链接:POJ - 1742 题目大意 现有 n 种不同的硬币,每种的面值为 Vi ,数量为 Ni ,问使用这些硬币共能凑出 [1,m] 范围内的多少种面值. 题目分析 使用一种 O(nm) 的 D ...
- Knight Tournament
Codeforces Round #207 (Div. 1) A:http://codeforces.com/problemset/problem/356/A 题意:给你n匹马,然后有m场比赛.每场比 ...
- ESXI转HYPER-V,问题接二连三啊(VMDK转VHD)
首先说软件: 要不是用SCVMM来转的话,我用得最爽的还是WINIMAGE,自然流畅.其它的都有各种问题. 其次说说配置更改: 如果原ESXI里只有一个硬盘,一切好说,如果里面挂载了两个,甚至三个硬盘 ...
- ibatis报错
关键词:org.springframework.dao.DataIntegrityViolationException 在程序中进行数据库插入操作时报错如下: 未知异常:org.springframe ...
- XFS:大数据环境下Linux文件系统的未来?
XFS:大数据环境下Linux文件系统的未来? XFS开发者Dave Chinner近日声称,他认为更多的用户应当考虑XFS.XFS经常被认为是适合拥有海量数据的用户的文件系统,在空间分配方面的可 ...
- 【Fiddler】手机抓包
Fiddler (四) 实现手机的抓包 手机配置了后,Fiddler不开起来就什么也连接不了
- 【模拟】Codeforces 711B Chris and Magic Square
题目链接: http://codeforces.com/problemset/problem/711/B 题目大意: N*N的矩阵,有且只有一个0,求要把这个矩阵变成幻方要填什么正数.无解输出-1.幻 ...
- Shapely介绍及用户手册
本文主要是基于shapely官方文档翻译而成 shapely主要是在笛卡尔平面对几何对象进行操作和分析. 性能 Shapely中所有的操作都是使用GEOS库.GEOS是用C++写的,也被用在许多应用程 ...
- [置顶] VC++界面编程之--使用分层窗口实现界面皮肤
使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果. 在很多情况下,界面的漂亮与否,取决于PS的制作 ...
- 用C#来开发CAD插件,含源代码
转自原文 用C#来开发CAD插件,含源代码 CAD插件看起来很神秘,其实一个合格码农经过几天就能快速掌握.没什么秘密,开发CAD插件和winform一样简单学几个类库用法就是(只是太多人不喜欢知识分享 ...