PHP SMARTY 樣板引擎
在樣版裡,我們可以透過Smarty預先定義好的變數,以存取PHP中的全域變數(SuperGlobals)
Smarty 保留變數 | 等同的PHP變數 |
$smarty.get | $_GET |
$smarty.post | $_POST |
$smarty.request | $_REQUEST |
$smarty.session | $_SESSION |
$smarty.cookies | $_COOKIE |
$smarty.env | $_ENV |
$smarty.server | $_SERVER |
$smarty.const | 利用define函式定義的常數 |
- 得到陣列的數量:<{$array|@count}>
- 刪除快取: $smarty->clearAllCache();
- 循環取得變數(2.xx)
<{foreach from=$teams item=team name=team_f}> <{/foreach}>
將foreach 命名為「team_f」
<{$smarty.foreach.team_f.first}> :第1次執行 foreach迴圈
<{$smarty.foreach.team_f.last}> :最後1次執行 foreach迴圈
<{$smarty.foreach.team_f.iteration}> :取得迴圈的計數值,依序輸出1、2、3......
<{$smarty.foreach.team_f.total}> :取得迴圈執行總數,等同<{$array|@count}>
<{assign var=conuter value=$smarty.foreach.n.total+1}>
<{$conuter}> -
另一種方法(3.xx)
<section> <div class="container"> <h1>成績單</h1> <table class="table table-hover table-bordered"> <{foreach $rows as $row}> <{if $row@first}> <tr> <th>序</th> <th>姓名</th> <th>國文</th> <th>英文</th> <th>社會</th> </tr> <{/if}> <tr> <{assign var=conuter value=$row@index+1}> <td><{$conuter}></td> <td><{$row.name}></td> <td><{$row.chinese}></td> <td><{$row.english}></td> <td><{$row.society}></td> </tr> <{if $row@last}> <tr> <th colspan=5>總共有:<{$row@total}>人</th> </tr> <{/if}> <{/foreach}> </table> </div> </section>
$row@first:第一次執行foreach
$row@last:最後1次執行 foreach
$row@index:取得迴圈的計數值 0、1、2、........
$row@total:取得迴圈執行總數php
$rows[0]['name']="東方不敗"; $rows[0]['chinese']=89; $rows[0]['english']=60; $rows[0]['society']=70; $rows[1]['name']="楊過"; $rows[1]['chinese']=60; $rows[1]['english']=80; $rows[1]['society']=66; $rows[2]['name']="小龍女"; $rows[2]['chinese']=50; $rows[2]['english']=100; $rows[2]['society']=90; $smarty->assign('rows', $rows);
-
在樣板中,Smarty 也可以直接拿PHP的函數來用,我們稱之為「變數修飾器」,例如:
<{$SCRIPT_NAME|basename}>
變數後面要加上 |
| 後面加上函數名稱,函數需要的參數用 : 格開
例:得到檔案名稱 - 自訂義變數
<{assign var=theme_name value=$xoTheme->folderName}>