经典语句大全
(1) [volist]volist 标签里用IF 语句
volist

(1) [volist]volist 标签里用IF 语句

<volist name="pic" id="vo">
<li>
                           <img src="{:C("URL_MERCHANTS_IMAGE_SMALL")}{$vo}" bimg="{:C("URL_MERCHANTS_IMAGE_BIG")}{$vo}" <if condition="$key eq 0">class="overbg"</if>>
</li>
</volist>   

(2) [volist]Thinkphp中的volist标签用法简介


通常volist标签多用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,对此可以直接使用volist标签进行输出。
在控制器中首先对模版赋值,如下例所示:
$User = M("User");
$list = $User->limit(10)->select();
$this->assign("list",$list);
在模版定义如下,循环输出用户的编号和姓名:
<volist name="list" id="vo">
{$vo.id}:{$vo.name}<br/>
</volist>
Volist标签的name属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id表示当前的循环变量,可以随意指定,但需要确保不要和name属性冲突,例如:
<volist name="list" id="data">
{$data.id}:{$data.name}<br/>
</volist>
支持输出查询结果中的部分数据,例如输出其中的第5~15条记录:
<volist name="list" id="vo" offset="5" length="10">
{$vo.name}
</volist>
输出偶数记录:
<volist name="list" id="vo" mod="2" >
<eq name="mod" value="1">
{$vo.name}
</eq>
</volist>
Mod属性还用于控制一定记录的换行,例如:
<volist name="list" id="vo" mod="5" >
{$vo.name}
<eq name="mod" value="4"><br/></eq>
</volist>
为空的时候输出提示:
<volist name="list" id="vo" empty="暂时没有数据" >
{$vo.id}|{$vo.name}
</volist>
empty属性不支持直接传入html语法,但可以支持变量输出,例如:
$this->assign("empty","<span class="empty">没有数据</span>");
$this->assign("list",$list);
然后在模板中使用:
<volist name="list" id="vo" empty="$empty" >
{$vo.id}|{$vo.name}
</volist>
输出循环变量:
<volist name="list" id="vo" key="k" >
{$k}.{$vo.name}
</volist>
如果没有指定key属性的话,默认使用循环变量i,例如:
<volist name="list" id="vo" >
{$i}.{$vo.name}
</volist>
如果要输出数组的索引,可以直接使用key变量,和循环变量不同的是,这个key是由数据本身决定,而不是循环控制的,例如:
<volist name="list" id="vo" >
{$key}.{$vo.name}
</volist>
模板中可以直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:
<volist name=":fun("arg")" id="vo">
{$vo.name}
</volist>

(3) [volist]ThinkPHP中的数组改造及<volist>标签嵌套循环


产品分类->产品
在Thinkphp开发手册中,有关于<volist>标签嵌套的解释说明。如下:
标签嵌套
模板引擎支持标签的多层嵌套功能,可以对标签库的标签指定可以嵌套。
系统内置的标签中,volist(及其别名iterate)、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等标签都可以嵌套使用。例如:
<volist name="list" id="vo">
<volist name="vo["sub"]" id="sub">
{$sub.name}
</volist>
</volist>
上面的标签可以用于输出双重循环。
默认的嵌套层次是3级,所以嵌套层次不能超过3层,如果需要更多的层次可以指定TAG_NESTED_LEVEL配置参数。
但是在Action中具体应该怎样赋值“list”呢?从说明中可以看出,list应该是一个二维数组,下边是我自己编写的代码,经测试可以用。
     $Baojia=new Model("baojia");     $Class=new Model("class");     $parent=$Class->select();          foreach($parent as $n=> $val){      $parent[$n]["voo"]=$Baojia->where("belongto=\"".$val["name"]."\"")->select();           }     $this->assign("list",$parent);
<volist name="list" id="vo">       {$vo.name}<BR><volist name="vo["voo"]" id="sub"> {$sub.name} </volist><BR>        </volist>
数据库中定义了两个表,一个是报价表,一个是分类表,实现的功能是像树形菜单一样,显示分类,每个分类下边是各个型号的报价。
代码主要功能是:
首先创建模型,
$Baojia=new Model("baojia");$Class=new Model("class");
然后查询分类中的数据,这一步非常重要,因为我们知道,数据库查询返回的是类似表格的二维形式的数据,当我们取出单条数据时,相当与读取每行数据。当调用<volist>时,thinkphp后台会自动读取每一行数据。
$parent=$Class->select();     将报价中的数据存入$parent中,其中$n是$parent数组的序号,也就相当于存入$parent中的数据表,每行添加一个索引,这个索引指向属于这个分类的报价。
     foreach($parent as $n=> $val){      $parent[$n]["voo"]=$Baojia->where("belongto=\"".$val["name"]."\"")->select();           }
最后,$this->assign("list",$parent);
通 过这个程序,可以更深入的理解<volist>标签,其实如果在数据库操作中,<volist>标签的name只能assign 成数据库表类型(当然也可以是数组型,因为数据库查询得到的数据本身就是数组型的),当我们在视图页面调用<volist>标签时,特别是嵌 套调用时,始终记住每一层的name都必须是数组型的,像本程序中,最外层,<volist name="list" id="vo">这里的list就是我们最初定义的$parent,这个变量指向查询class表得到的数据表,里层<volist name="vo["voo"]" id="sub">,也就是$parent[$n]["voo"]所指向的数据表,也就是baojia表中的相应数据。
通过这样的分析,条理已经很清晰了,举一反三就可以实现N重循环,当然如果需要更多的层次可以指定TAG_NESTED_LEVEL配置参数。
这样的话,就可以实现例如:国家->省->市->县->乡镇等多重循环
参考http://zhujllove.blog.163.com/blog/static/113901825201192422031982/ 

volist

https://m.shanpow.com/mrmy/498036/

推荐访问:thinkphp5 volist
《volist.doc》
将本文的Word文档下载,方便收藏和打印
推荐:
下载文档
上一篇: excel编程
相关阅读经典语句大全 
热点推荐