Volist标签主要用于在模板中循环输出数据集或者多维数组。

属性:

name : 必须,输出数据模板变量,后台提供的变量
id : 必须,是循环变量,可以随便定义,但是不能跟name相同。

举个栗子:

<volist name="user" id="vo">
{$vo.name}
</volist>

后台传入user变量
$this->assign('user',$user);

这样就循环输出user的name

offset : 可选,从模板变量的第几个开始循环。
lengthb : 可选,输出数据的长度。

举个栗子:

<volist name="user" id="vo" offset="5" length="10">
{$vo.name}
</volist>
输出第5条到第15条记录

key : 可选,循环的索引。

举个栗子:

<volist name="user" id="vo" key="k">
{$k}.{$vo.name}
</volist>
输出:
1.名字1
2.名字2
3.名字3
...
<volist name="user" id="vo">
{$i}.{$vo.name}
{$key}.{$vo.name}
</volist>
如果没有定义key,默认使用i,或者是key,效果也是一样的

empty : 可选,数据为空的时候输出的内容

<volist name="list" id="vo" empty="暂时没有数据" >
{$vo.name}
</volist>

拓展一下:
从2.1版开始允许在模板中直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:

<volist name=":fun('arg')" id="vo">{$vo.name}</volist>

还有在volist循环里面,如果嵌入php代码,怎么输出变量?直接看栗子吧:

<select>
<volist name="goods" id="vo">
<option value="{$vo.goods_name}" <?php echo ($goods_name == $vo['goods_name'])?"selected":"" ?>{$key}.{$vo.goods_name}</option>
</volist>
</select>

在下拉列表里面,根据后台提供的数据,动态的添加option选项。在里面,用php代码,实现select动态显示option的值,而在php代码块中,使用volist的变量,则要使用$vo[‘goods_name’]