当前位置:首页 > 网站建设

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

林记seo2019-08-13706人围观

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_id=".$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.                   
  13.                 $qusList = M("question")->order("oid ASC")->select();  
  14.                 $this->assign('qusList', $qusList);  
  15.                 $this->display("list");  
  16.             }  
  17.         }  
  18.     }  

模板代码:

 

 

[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>   


 

    版权声明:

    博主在此发文(包括但不限于汉字、拼音、拉丁字母)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对观点

    如需要详查请直接与键盘生产厂商法人代表联系。挖井挑水无水表,不会网购无快递。

    文章内容除非注明原创,否则来源于互联网,不代表本人的任何立场;涉及到的软件来源于互联网,仅供个人下载使用,请勿用于商业用途,版权归软件开发者所有,下载后请于24小时内删除,请支持正版!

    因下载本站任何资源造成的损失,全部责任由使用者本人承担!

    如果你是版权方,认为本文内容对您的权益有所侵犯,请联系博主,待博主进行严格地审查和背景调查后,情况属实的将在三天内将本文删除或修正。

    博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。