Action代码:

  1. public function index(){
  2. $prod = I("get.prod_en");
  3. $id = I("get.id", 0, "int");
  4. if ($prod == ""){
  5. $serviceProduct = array();//多重循环遍历的数组
  1. //数据保存在两张表中,这里通过循环初始化$serviceProduct数组
  2. $service = M("product_class")->order("oid ASC")->select();
  3. for ($i = 0; $i < count($service); $i++)
  4. {
  5. array_push($serviceProduct, array("srvName"=>$service[$i]["pc_cn"], "product"=>M("product")->where("prod_class_id=".$service[$i]["pcid"])->order("oid ASC")->select()));
  6. }
  1. //如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋
  2. 值,无论何种变量类型都统一使用assign赋值。
  3. $this->assign("serviceProduct", $serviceProduct);
  4. $this->display();
  5. }else{
  6. if ($id > 0){
  7. $this->display("detail");
  8. }else{
  9. $this->assign('prod_en', $prod);
  10. $clsList = M("question_class")->order("oid ASC")->select();
  11. $this->assign('clsList', $clsList);
  12. $qusList = M("question")->order("oid ASC")->select();
  13. $this->assign('qusList', $qusList);
  14. $this->display("list");
  15. }
  16. }
  17. }

模板代码:

  1. <volist name="serviceProduct" id="sp" key="i">
  2. <dl class="dlist odd">
  3. <dt>{$sp.srvName}</dt>
  4. <volist name="sp.product" id="pd" key="j">
  5. <dd><a href="/index.php/question?prod_en={$pd.prod_en}">{$pd.prod_cn}</a></dd>
  6. <if condition="$j lt count($sp['product'])">
  7. <dd>|</dd>
  8. </if>
  9. </volist>
  10. <if condition="count($sp['product']) EQ 0">
  11. <dd> </dd>
  12. </if>
  13. </dl>
  14. </volist>

当使用多重嵌套循环时,需要为每一个volist指定key值,通过

  1. <if condition="$j lt count($sp['product'])">

判断是否为数组中的最后一个元素。

Volist标签实现隔行变色

方法1:

  1. <volist name="newslist" id="vo" mod="2">
  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>
  3. </volist>

volist 中的 mod 参数相当于指定一个频率,系统会将当前的实际记录对 mod 参数值求余(PHP中的%运算符)运算。而配合判断标签(如eq标签),就可以按照频率控制输出的数据或数据显示的格式。

方法2:

  1. <volist name="newslist" id="vo" key="k">
  2. <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>
  3. </volist>

下面再列出一个 Volist 循环table里的tr、td的实例:

    1. <tr bgcolor="#FBFCF1">
    2. <volist name="siteurl" id="site" mod="4">
    3. <eq name="mod" value="0"></tr><tr bgcolor="#FBFCF1"></eq>
    4. <td width="25%"><a href="{$site.url}" target="_blank">{$site.name}</a></td>
    5. </volist>
    6. </tr>

ThinkPHP学习 volist标签高级应用之多重嵌套循环、隔行变色(转)的更多相关文章

  1. PHP 学习笔记之一:thinkPHP的volist标签

    Volist标签主要用于在模板中循环输出数据集或者多维数组. 属性: name : 必须,输出数据模板变量,后台提供的变量. id : 必须,是循环变量,可以随便定义,但是不能跟name相同. 举个栗 ...

  2. ThinkPHP 模板 Volist 标签嵌套循环输出多维数组

    ThinkPHP 中对 volist 标签嵌套使用可实现多维数组的输出. volist 嵌套使用 一般的二维数组,可以用 volist 标签直接循环输出.对于多维数组,则需要对其中的数组成员再次使用 ...

  3. thinkphp中volist标签

    volist标签 volist标签主要用于在模板中循环输出数据集或者多维数组 volist(name,id,offset,length,key,mod,empty) name(必须):要输出的数据模型 ...

  4. Thinkphp的Volist标签

    Volist标签主要用于在模板中循环输出数据集或者多维数组. volist标签(循环输出数据) 闭合 非闭合标签 属性 name(必须):要输出的数据模板变量 id(必须):循环变量 offset(可 ...

  5. thinkphp 内置标签volist 控制换行

    thinkphp 内置标签volist 控制换行 volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行 ...

  6. ThinkPHP Volist标签

    Volist标签主要用于在模板中循环输出数据集或者多维数组. volist标签(循环输出数据) 闭合 非闭合标签 属性 name(必须):要输出的数据模板变量 id(必须):循环变量 offset(可 ...

  7. thinkphp <volist>标签中 <if> 判断的写法

    thinkphp <volist>标签中 <if> 判断的写法 <volist name="data" id="vo"> & ...

  8. thinkphp中view页面中的volist标签转化为原生php分析(多去看源代码,你会发现不仅简单,方便你理解,还节约时间)

    thinkphp中view页面中的volist标签转化为原生php分析(多去看源代码,你会发现不仅简单,方便你理解,还节约时间) 一.总结 1.标签和原生php之间的关系:标签只是为了方便你使用,标签 ...

  9. Thinkphp中的volist标签(查询数据集(select方法)的结果输出)用法简介

    参考网址:http://camnpr.com/archives/1515.html 通常volist标签多用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数 ...

随机推荐

  1. 转: Linux C 动态内存分配 malloc及相关内容 .

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  2. 10个简单实用的 jQuery 代码片段

    尽管各种 JavaScirpt 框架和库层出不穷,jQuery 仍然是 Web 前端开发中最常用的工具库. 今天,向大家分享我觉得在网站开发中10个简单实用的 jQuery 代码片段. 1.平滑滚动到 ...

  3. Network Saboteur

    poj2531:http://poj.org/problem?id=2531 题意:给你一个图,图中点之间会有边权,现在问题是把图分成两部分,使得两部分之间边权之和最大.题解:一开始比知道怎么办,想用 ...

  4. Highways poj 2485

    Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...

  5. 开启SQL Server 2012的远程连接

    有个远程的SQL Server服务器需要连接,因为SQL server默认是把远程连接关闭的. 以下有文档,照着做了,但是还是连不上, http://www.2cto.com/database/201 ...

  6. Android Wear开发 - 卡片通知 - 第一节 : 添加Android Wear通知特性

    一. 前言说明 Android Wear大部分显示形式是卡片的形式,而最简单地支持Android Wear方式就是用通知**Notification**.而实现最简单的,非高度自定义的通知,则只需要在 ...

  7. updatepanel刷新后重新加载js脚本问题

    在页尾加 <script type="text/javascript"> Sys.WebForms.PageRequestManager.getInstance().a ...

  8. 【REST API】

    微信公众平台开发者文档 RESTful API 设计最佳实践 登录判断写去接口里 PUT 新建一个资源POST 更新一个资源GET 查看一个资源DELETE 删除一个资源

  9. HDOJ 2073 无限的路

    Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...

  10. C++ 路径中\\与/

    windows默认使用\\ linux默认使用/ 可以都用/