循環輸出標簽
VOLIST標簽
volist標簽(qian)通常用(yong)于(yu)查詢數據集(ji)(select方(fang)法(fa))的(de)結(jie)果輸出(chu),通常模型的(de)select方(fang)法(fa)返回的(de)結(jie)果是一個二維(wei)數組,可(ke)以直接使用(yong)volist標簽(qian)進行輸出(chu)。 在控制器中首(shou)先對模版賦值:
$list = User::all();
$this->assign('list',$list);
在模版定義如下,循(xun)環輸(shu)出用戶的(de)編號和姓(xing)名:
{volist name="list" id="vo"}
{$vo.id}:{$vo.name}<br/>
{/volist}
Volist標簽(qian)的(de)name屬(shu)性(xing)表(biao)示模(mo)板賦(fu)值的(de)變(bian)(bian)量(liang)名稱,因此不(bu)可(ke)隨意在模(mo)板文件中改變(bian)(bian)。id表(biao)示當前的(de)循環變(bian)(bian)量(liang),可(ke)以隨意指(zhi)定,但確保不(bu)要(yao)和name屬(shu)性(xing)沖突(tu),例如:
{volist name="list" id="data"}
{$data.id}:{$data.name}<br/>
{/volist}
支持輸出查(cha)詢結(jie)果(guo)中(zhong)的部分數據(ju),例如輸出其中(zhong)的第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屬(shu)性還(huan)用于控制一定記錄(lu)的換行,例如:
{volist name="list" id="vo" mod="5" }
{$vo.name}
{eq name="mod" value="4"}<br/>{/eq}
{/volist}
為空的時候輸(shu)出(chu)提(ti)示:
{volist name="list" id="vo" empty="暫時(shi)沒有數據" }
{$vo.id}|{$vo.name}
{/volist}
empty屬性不支持直接傳入(ru)html語法,但可以支持變量輸出,例如:
$this->assign('empty','<span class="empty">沒有數據</span>');
$this->assign('list',$list);
然后在模板中使(shi)用:
{volist name="list" id="vo" empty="$empty" }
{$vo.id}|{$vo.name}
{/volist}
輸(shu)出循(xun)環變量:
{volist name="list" id="vo" key="k" }
{$k}.{$vo.name}
{/volist}
如果沒有指定key屬性的話,默認使用循環變(bian)量i,例如:
{volist name="list" id="vo" }
{$i}.{$vo.name}
{/volist}
如(ru)(ru)果要輸出數組的索引(yin),可以直(zhi)接使用key變量(liang),和(he)循(xun)環(huan)變量(liang)不(bu)同的是(shi),這個(ge)key是(shi)由數據本身(shen)決定,而不(bu)是(shi)循(xun)環(huan)控(kong)制的,例如(ru)(ru):
{volist name="list" id="vo" }
{$key}.{$vo.name}
{/volist}
模(mo)板中(zhong)(zhong)可以直接使用函數設定數據(ju)集,而不需要在控(kong)制器(qi)中(zhong)(zhong)給(gei)模(mo)板變量賦值傳入數據(ju)集變量,如:
{volist name=":fun('arg')" id="vo"}
{$vo.name}
{/volist}
FOREACH標簽
foreach標簽(qian)類似與volist標簽(qian),只是(shi)更加簡單,沒有太(tai)多額(e)外的(de)屬性,最簡單的(de)用(yong)法是(shi):
{foreach $list as $vo}
{$vo.id}:{$vo.name}
{/foreach}
該用法(fa)解析(xi)后是最簡潔的。
也可以使用(yong)下面(mian)的用(yong)法:
{foreach name="list" item="vo"}
{$vo.id}:{$vo.name}
{/foreach}
name表(biao)示(shi)數據源 item表(biao)示(shi)循環(huan)變量。
可(ke)以輸(shu)出(chu)索引(yin),如下(xia):
{foreach name="list" item="vo" }
{$key}|{$vo}
{/foreach}
也可以定義索引的變量名
{foreach name="list" item="vo" key="k" }
{$k}|{$vo}
{/foreach}
FOR標簽
用法:
{for start="開始值" end="結束值" comparison="" step="步進值" name="循(xun)環變量名" }
{/for}
開始值(zhi)(zhi)、結束值(zhi)(zhi)、步進(jin)值(zhi)(zhi)和(he)循環變量都可(ke)以(yi)支持變量,開始值(zhi)(zhi)和(he)結束值(zhi)(zhi)是(shi)必須(xu),其他是(shi)可(ke)選。comparison 的(de)(de)默認值(zhi)(zhi)是(shi)lt,name的(de)(de)默認值(zhi)(zhi)是(shi)i,步進(jin)值(zhi)(zhi)的(de)(de)默認值(zhi)(zhi)是(shi)1,舉例(li)如下:
{for start="1" end="100"}
{$i}
{/for}
解析(xi)后(hou)的代(dai)碼是
for ($i=1;$i<100;$i+=1){
echo $i;
}
