模擬 for 迴圈
在 Smarty 中,我們可以用以下的語法來完成類似 for 迴圈的效果:
{section name="forLoop" start=1 loop=10}
{/section}
其中 start 即為起始值, loop 為小於而不等於的終值。
如果以 PHP 語法來表示,則如下所示:
for ($i = 1; $i < 10; $i ++) {
// ...
}
使用無參數原生 PHP 函式
我們可以在樣版中使用許多原生的 PHP 函式 (但還是有例外) 來當做變數修飾函式,不過如果有些函式不需要參數時,我們可以用以下語法來呼叫:
{''|@time}
當然這裡的空字串對 time 函式來說是沒有意義的,而在函式前加上 @ 號,表示要直接呼叫原生 PHP 函式。
在 assign 設定 default 值
假設當樣版變數不存在或可轉換為 false 值時,我們會希望顯示一個預設值;而 Smarty 剛好就提供了一個 default 變數修飾函式讓我們使用,語法如下:
{$test|default:'NULL'}
而 default 變數修飾函式不僅只有在呈現變數能用,也能在樣版 assign 變數時使用,如下:
{assign var=value2 value=$value1|default:0}
註:當然不只有 default ,幾乎所有變數修飾函式都能在 assign 或其他可接受變數的樣版函式裡使用。
物件導向語法
Smarty 也支援 PHP 的物件導向語法,例如呼叫某物件函式:
{$test->getFakeValue()}
我們也能在樣版函式中,使用物件導向語法,而且後面也能串接變數修飾函式:
{assign var=nullValue value=$test->getNullValue()|default:'NULL'}
利用 config 變數或常數來當做變數修飾函式的參數
通常我們會用到設定值來避免重複設定一些常數值,例如用 PHP 陣列的方式指定給 Smarty :
$config = array(
'date' => '%Y/%m/%d',
'time' => '%H:%M',
);
$smarty->assign($config);
在樣版裡就可以這樣用:
{$date|date_format:$config.date}
我們也可以利用 PHP 的常數來當做設定,在樣版可以用「 $smarty.const.常數名稱」來取得常數內容:
{$date|date_format:$smarty.const.DATE_FORMAT}
當然,我們也可以透過 Smarty 內建的 config 機制;例如我們有個 config.conf ,內容如下:
date = "%Y/%m/%d"
time = "%H:%M"
然後在樣版內改用:
{config_load file="config.conf"}
{$date|date_format:#date#} {$time|date_format:#time#}
其中 #date# 與 #time# 就是從 config.conf 中讀取的。
註:感謝 Smarty 頭號粉絲 – 小魚提供以上技巧。
用 {cycle} 配合 CSS 來做表格列交替變色
我們可以用 cycle 配合 sction 或 foreach ,來做出交替變色的表格,語法如下:
{secion ....}
.....
<tr class="{cycle values="normal,alt"}">
.....
{/secion}
可以看出,它比使用 {if} 來得簡潔許多:
<tr class="{if $smarty.section.forLoop.iteration is odd}normal{else}alt{/if}">
註:感謝 Smarty 頭號粉絲 – 小魚提供以上技巧。
如果還有相關技巧的話,將會陸續再更新。
沒有留言:
張貼留言