循環(huán)輸出標(biāo)簽
VOLIST標(biāo)簽
volist標(biāo)簽通常用于查詢數(shù)據(jù)集(select方法)的結(jié)果輸出,通常模型的select方法返回的結(jié)果是一個(gè)二維數(shù)組,可以直接使用volist標(biāo)簽進(jìn)行輸出。 在控制器中首先對(duì)模版賦值:
$list = User::all();
$this->assign('list',$list);
在模版定義如下,循環(huán)輸出用戶的編號(hào)和姓名:
{volist name="list" id="vo"}
{$vo.id}:{$vo.name}<br/>
{/volist}
Volist標(biāo)簽的name屬性表示模板賦值的變量名稱,因此不可隨意在模板文件中改變。id表示當(dāng)前的循環(huán)變量,可以隨意指定,但確保不要和name屬性沖突,例如:
{volist name="list" id="data"}
{$data.id}:{$data.name}<br/>
{/volist}
支持輸出查詢結(jié)果中的部分?jǐn)?shù)據(jù),例如輸出其中的第5~15條記錄
{volist name="list" id="vo" offset="5" length='10'}
{$vo.name}
{/volist}
輸出偶數(shù)記錄
{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}
為空的時(shí)候輸出提示:
{volist name="list" id="vo" empty="暫時(shí)沒有數(shù)據(jù)" }
{$vo.id}|{$vo.name}
{/volist}
empty屬性不支持直接傳入html語法,但可以支持變量輸出,例如:
$this->assign('empty','<span class="empty">沒有數(shù)據(jù)</span>');
$this->assign('list',$list);
然后在模板中使用:
{volist name="list" id="vo" empty="$empty" }
{$vo.id}|{$vo.name}
{/volist}
輸出循環(huán)變量:
{volist name="list" id="vo" key="k" }
{$k}.{$vo.name}
{/volist}
如果沒有指定key屬性的話,默認(rèn)使用循環(huán)變量i,例如:
{volist name="list" id="vo" }
{$i}.{$vo.name}
{/volist}
如果要輸出數(shù)組的索引,可以直接使用key變量,和循環(huán)變量不同的是,這個(gè)key是由數(shù)據(jù)本身決定,而不是循環(huán)控制的,例如:
{volist name="list" id="vo" }
{$key}.{$vo.name}
{/volist}
模板中可以直接使用函數(shù)設(shè)定數(shù)據(jù)集,而不需要在控制器中給模板變量賦值傳入數(shù)據(jù)集變量,如:
{volist name=":fun('arg')" id="vo"}
{$vo.name}
{/volist}
FOREACH標(biāo)簽
foreach標(biāo)簽類似與volist標(biāo)簽,只是更加簡(jiǎn)單,沒有太多額外的屬性,最簡(jiǎn)單的用法是:
{foreach $list as $vo}
{$vo.id}:{$vo.name}
{/foreach}
該用法解析后是最簡(jiǎn)潔的。
也可以使用下面的用法:
{foreach name="list" item="vo"}
{$vo.id}:{$vo.name}
{/foreach}
name表示數(shù)據(jù)源 item表示循環(huán)變量。
可以輸出索引,如下:
{foreach name="list" item="vo" }
{$key}|{$vo}
{/foreach}
也可以定義索引的變量名
{foreach name="list" item="vo" key="k" }
{$k}|{$vo}
{/foreach}
FOR標(biāo)簽
用法:
{for start="開始值" end="結(jié)束值" comparison="" step="步進(jìn)值" name="循環(huán)變量名" }
{/for}
開始值、結(jié)束值、步進(jìn)值和循環(huán)變量都可以支持變量,開始值和結(jié)束值是必須,其他是可選。comparison 的默認(rèn)值是lt,name的默認(rèn)值是i,步進(jìn)值的默認(rèn)值是1,舉例如下:
{for start="1" end="100"}
{$i}
{/for}
解析后的代碼是
for ($i=1;$i<100;$i+=1){
echo $i;
}