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"); } } }

模板代码:

{$sp.srvName}
{$pd.prod_cn}
|

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

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


Volist标签实现隔行变色

方法1:


  • style="background-color:#000; ">·{$vo.title}{$vo.edittime|date="Y年m月d日",###}{$vo.author}


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

    方法2:
  • style="background-color:#000; ">·{$vo.title} {$vo.edittime|date="Y年m月d日",###}{$vo.author}

  • 下面再列出一个 Volist 循环table里的tr、td的实例:
    {$site.name}






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

      推荐阅读