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

Action代码:

[php]
  1.   public function index(){  
  2. $prod = I("get.prod_en");  
  3. $id = I("get.id", 0, "int");  
  4. if ($prod == ""){  
  5.     $serviceProduct = array();//多重循环遍历的数组  
[php] 
  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_vars">$service[$i]["pcid"])->order("oid ASC")->select()));  
  6.             }  
[php] 
  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.     }  

模板代码:

[html] 
  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><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值,通过

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

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

Volist标签实现隔行变色

方法1:

[html] 
  1. <volist name="newslist" id="vo" mod="2">    
  2.  <li <eq name="mod" value="0"style="background-color:#000;"</eq>><span<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:

[html] 
  1. <volist name="newslist" id="vo" key="k">    
  2.  <li <if condition="$k%2== '0'"style="background-color:#000;"</if >><span<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的实例:

[html] 
    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%"><href="{$site.url}" target="_blank">{$site.name}</a></td>    
    5. </volist>    
    6. </tr>    
更多相关文章
  • 存储学习之--StarWind高级配置设置Client访问规则
    存储学习之--StarWind高级配置(设置Client访问规则)     默认的StarWind允许所有的Client都可以访问iscsi target,可以结合Windows防火墙,建立安全的访问规则,指定只有经过认证的Client才可以访问!一.配置访问规则添加新的访问规则允许指定的ip可以访 ...
  • 存储学习之--StarWind高级配置添加新的存储和扩展SIZE
    存储学习之--StarWind高级配置(添加新的存储和扩展SIZE)    在配置完StarWind的存储后,可以按照需求来增加或扩展共享存储设备的容量,以下是具体的操作步骤. 一.添加新的存储(New Target)选择添加新的target命名新的target选择存储设备类型选择虚拟的方式以镜像方 ...
  • Hadoop学习笔记(7)——高级编程
    http://www.cnblogs.com/zjfstudio/p/3887551.html Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成&l ...
  • thinkphp内置的foreach和include等模板标签使用是非常方便的:但是内置的那些标签只能满足常用功能,个性化的功能就需要我们自己编写自定义模板标签了:下面就是要讲解如何实现:示例环境:thinkphp3.2.3thinkphp的模板标签放在ThinkPHP/Library/Think/ ...
  • 上篇文章已经把自定义标签的准备工作讲完了:那么接下来就是见证...的时候了:没看如何配置的请先移步thinkphp自定义模板标签(一)    闭合标签就是单标签:比如a标签.img标签等等:    非闭合标签就是对标签:比如div.p标签等等:    这里以自定义的ueditor和recommend ...
  • git学习(7)标签管理 1. 建立标签 在发布版本时候,我们通常会在版本库中打一个标签,这样就唯一确定了打标签的版本,有点像个里程碑,这里会有一个指向某个commit的指针打标签很简单,首先切换到要打标签的分支上,然后使用命令git tag <name> $ git branch * ...
  • ThinkPHP学习二理清ThinkPHP的目录结构及访问规则,创建第一个控制器
      view plaincopy <?php   // 本类由系统自动生成,仅供测试用途   namespace Home\Controller;   use Think\Controller;   class IndexController extends Controller {      ...
  • ThinkPHP后台治理具备项目自动创建的功能,首先确保后台治理项目运行正常.自动创建的作用是根据节点治理里面添加的项目名称自动创建项目的目录结构.进口文件.配置文件等,免往了手动创建众多目录和文件的麻烦.要使用自动创建功能,请确认你的网站根目录具有可写权限.然后,在后台的节点治理添加项目节点,添加 ...
一周排行
  • 1. 主要原因是复制.vdi文件是将虚拟机完全copy了一份(包括MAC地址),由于新的硬件平台网卡MAC与系统中网卡MAC不一致,因此网卡无法启动2. 解决办法:rm -rf /etc/udev/rules.d/7 ...
  • 今天是R9觉得最胸闷的一天. R9看到老大的邮件说,R9和开发经理面试的规划经理,竟然是R9们的头. 这恐怕是整个集团最大的笑话. 这恐怕也是R9个人创造的最大的笑话. R9的老大,让R9帮他面试一个和R9同样级别的 ...
  • 在svn中发布多个工程
    以前用svn只是在服务上发布一个工程,今天需求来了,要求部署两个,以前没有发布两个,只有现 ...
  • 似乎功能上还欠缺了些什么,需要安装一个图形显示历史追溯的系统cacit,建议当完全了解系统的运行情况可以从nagios转换到使用cacit系统会更加直观些,另一个建议是使用zabbix,他有一个可以构建拓扑图的功能很 ...
  • 用备份进行Active Directory的灾难重建本实验拓扑仍然和上一篇博客一样.上篇博文中我们介绍了如何部署第一个域,域中的计算机可以共享用户账号,计算机账号和安全策略,我们应该想一下,为什么王楠在访问共享文件夹 ...
  • 易宝典文章——用ISA2006标准版发布Exchange2010的OWA系列之生成Exchange证书申请文件
    图5  完成申请文件证书申请文件生成后,需要用这个证书申请文件到企业CA处申请证书.请看“ ...
  • 我的Ubuntu 9.10目录结构/|-- bin|   |-- bash|   |-- bunzip2|   |-- bzcat|   |-- bzcmp -> bzdiff|   |-- bzdiff|   ...
  • 使用xshell登录中文版CentOS时,在xshell下显示中文乱码,通过如下办法可以有效的解决乱码问题 [root@localhost ~]# service vsftpd restart?抽. vsftpd锛  ...
  • // 如果要在真机运行, 需要一个session类, 并且制定分类为录音     AVAudioSession *session = [AVAudioSession new];     [session setCat ...
  • 接入商网站备案工作检查内容一览表序号检查内容备案网站真实性资料检查本单位网站备案管理发布平台和当面核验现场接入网站日常管理技术手段的建立(未备案的发现.备案网站的动态管理.不良信息的检测)4.IP地址信息报备制度及报 ...