smarty學習筆記三 常用內建方法

來源:互聯網
上載者:User

PHP內建方法
{$var=...}
該方法是{assign}的簡寫入模式,用來直接在模版中定義一個變數。
屬性:
scope:parent\root\global
支援nocache

{append}
在調用模版的過程中向模版變數中建立一個陣列變數,或者向一個已知的陣列變數中追加元素,支援nocache標籤
屬性:
var變數名
value變數值
index插入的變數在數組中的下標索引,如果沒指定該值,則預設添加在數組的最後
scope存取權限
支援nocache標籤

{assign}
作用與{$var=...}相同
屬性
var定義的變數名
value定義的變數值
scope存取權限
支援nocache標籤

{call}
用來調用在模版中使用{function}標籤定義的方法。該方法必須含有name屬性,同時也可以將變數以屬性的方式傳遞給調用的方法中
屬性:
name要調用的模版方法命
assign將調用模版方法後返回來的值儲存到assign定義的變數中,而不是直接輸出傳回值
[var...]向模版方法中傳遞變數以供方法使用
支援nocache標籤

{capture}
用來收集出現在{capture name='foo'}與{/capture}塊之間的內容,並將其內儲存到名字為foo的capture塊標籤中,如果未指明name屬性,預設default。可以使用$smarty.capture.foo來訪問儲存的內容。該標籤不可被嵌套使用。
屬性:
namecapture塊標籤名
assign若指定該屬性,將捕獲的內容賦值到給定變數中
append用來將捕獲的內容追加到指定的數組中去
支援nocache標籤

{config_load}
用來擷取設定檔中的變數資訊
屬性:
file要讀取的設定檔名
section讀取設定檔中指定片段
scope許可權分配

{debug}
彈出調試控制頁面。該設定不會受到在php指令碼中對debug設定的影響。

{extends}
該標籤用在子模版中,用來指明所要繼承的父模版。
該標籤必須在子模版的第一行中出現
如果子模板用{extends}標籤繼承父模板,那麼它只能包含{block}標籤(內容),其它任何模板內容都將忽略; 
使用此文法為模板資源繼承$template_dir目錄外的檔案。 
屬性:
file要被繼承的模版名

{for}
{for}{forelse}標籤用來進行簡單的迴圈,它支援下面兩種格式的用法:
{for $var=$start to $end} 步長為1
{for $var=$start to $end step $step} 指定步長
但迴圈為空白時執行{forelse}
屬性:
max限制最大的迴圈次數
支援nocache標籤

{foreach},{foreachelse}
用來對一個數組資料進行簡單的迴圈,格式有:
{foreach $array as $val}
{foreach $array as $key=>$val}
當迴圈的內容為空白時執行{foreachelse}語句
{foreach}具有下列屬性:@index, @iteration, @first, @last, @show, @total。
支援{break}和{continue}

{function}
用於在模版內部建立模版函數,調用方法與外掛程式調用類似。
注意:模版函數是全域的,如果要調用外部模版的模版函數,必須使用{call}標籤,調用自己模版的模版函數則可以直接使用{functionname}形式來調用。

{if},{elseif},{else}
與php中類似,只是必須用{/if}進行結束標誌。所有PHP條件函數和方法都可使用(is_array())。

{include}
用於將其它模版引入到當前模版中,當前模板中的任何有效變數在被包含模板中同樣可用。 
必須指定file屬性,該屬性指明模板資源的位置。 
設定assign屬性選項可以指定{include}的輸出貯存分配給哪個模板變數,而不顯示內容,類似於{assign}。 
變數可以作為屬性參數傳遞給被包含模板,任何明確傳遞給被包含模板的變數只在被包含檔案的範圍中有效。如果傳遞的屬性變數在當前模板中有同名變數,那麼傳遞的屬性變數將覆蓋當前模板變數。 
被包含模板內部可以使用主模板的所有變數,但在被包含模板裡面改變或建立的變數只有本地範圍,使用{include}語句後這些變數在主模板內部將不可見;有兩種方法可以改變這種預設行為(變數範圍):在{include}語句中使用scope屬性對被包含模板的所有賦值變數有效,或在{assign}語句中使用scope屬性改變個別變數範圍。後一特性在從被包含模板傳回值給主模板時非常有用。 
包含$template_dir檔案夾之外的模板請使用模板資源文法。
支援nocache、caching、cache_lifetime標籤
inline標籤:設定該項,將會被包含檔案編譯到包含檔案中(很有用)

{include_php} {insert}不贊成使用

{ldelim},{rdelim}
輸出smarty的左右標籤。

{nocache}
必須與{/nocache}成對出現。用來禁用模版中的某個片段進行緩衝。即出現在該塊中的內容不會被緩衝

{section},{sectionelse}
對連續的數值下標索引的數組進行迴圈。無法對值索引數組進行迴圈,建議使用{foreach}

{setfilter}
必須與{/setfilter}標籤成對出現。出現在該塊標籤內的所有變數都會進行過濾
文法:{setfilter filter1|filter2|filter3....}...{/setfilter}
該標籤可以被嵌套使用,內嵌的標籤過濾器會覆蓋上層的過濾器

{while}
與PHP的while語句類似。所有PHP條件函數和方法都可使用(is_array())。
PHP技術交流群 170855791

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.