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. phalapi

    public为程序入口 Demo和MyApp为具体的实现 public为多入口 demo和myapp都是入口,但是进入后即又为单入口 list为接口文档,是自动解析程序里的注释自动生成的文档 框架执行 ...

  2. google 论文

    从google历年所有论文的汇总来看,TOP5的分别是人工智能和机器学习.算法理论.人机交互与视觉.自然语言处理.机器感知,大家从一个侧面看出goolge research的重点了吧. Google所 ...

  3. [转]Windows Azure上安装SharePoint 2013

    基于Windows Azure 安装SharePoint 2013 前段时间写的基于Windows Azure安装SharePoint系列,由于Azure的体验账号过期了,所以不得不暂停.今天有幸参加 ...

  4. Java switch-case

    首先从原理上来阐述这个问题: switch(表达式){case 常量表达式1:语句1;....case 常量表达式2:语句2;default:语句;}1.default就是如果没有符合的case就执行 ...

  5. cognos启动报错

    [ ERROR ] Content Manager is unable to process your request because an unexpected event occurred in ...

  6. 「Poetize7」电话线路

    描述 每台电话都有一个独一无二的号码,用一个十位的十进制数字串表示.电话a和b之间能直接通信,当且仅当“a与b之间仅有一个数字不同”,或者“交换a的某 两位上的数字后,a与b相同”.而a.b之间建立通 ...

  7. 【Gzip】

    为你的网站开启 gzip 压缩功能(nodejs.nginx) Do not forget to use Gzip for Express.js 网页GZIP压缩检测

  8. 数学计数原理(Pólya):POJ 1286 Necklace of Beads

    Necklace of Beads Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7763   Accepted: 3247 ...

  9. Android 安全测试

    文章Android Security Tools对1~4的使用有介绍,下面主要分析其源码实现. 1.Manifest Explorer 2.Package Play Main.java public ...

  10. osg配置

    编辑器加载中..OSG+VS2010+win7环境搭建 Win7下 osg+vs2010环境搭建 一.相关准备 a) Osg源码 当前最新版:OpenSceneGraph的3.0.0.zip 下载链接 ...