W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
變量修飾器可以用于變量, 自定義函數(shù)或者字符串。 使用修飾器,需要在變量的后面加上|
(豎線)并且跟著修飾器名稱。 修飾器可能還會有附加的參數(shù)以便達到效果。 參數(shù)會跟著修飾器名稱,用:
(冒號)分開。 同時,默認全部PHP函數(shù)都可以作為修飾器來使用 (不止下面的),而且修飾器可以被 聯(lián)合使用。
Example 5.1. 修飾器例子
{* apply modifier to a variable *} {$title|upper} {* modifier with parameters *} {$title|truncate:40:"..."} {* apply modifier to a function parameter *} {html_table loop=$myvar|upper} {* with parameters *} {html_table loop=$myvar|truncate:40:"..."} {* apply modifier to literal string *} {"foobar"|upper} {* using date_format to format the current date *} {$smarty.now|date_format:"%Y/%m/%d"} {* apply modifier to a custom function *} {mailto|upper address="smarty@example.com"} {* using php's str_repeat *} {"="|str_repeat:80} {* php's count *} {$myArray|@count} {* this will uppercase and truncate the whole array *} <select name="name_id"> {html_options output=$my_array|upper|truncate:20} </select>
修飾器可以作用于任何類型的變量,數(shù)組或者對象。
這是Smarty3的默認行為。在Smarty2.x,你需要在數(shù)組后加上"@
" 標識來使用修飾器,如{$articleTitle|@count}
。 在Smarty3,不再需要使用"@
",它會被忽略。
如果你想要在數(shù)組的每一項中都加上修飾器,你可以通過循環(huán)數(shù)組進行,或者可以 在修飾器函數(shù)中提供這個功能。
另外,在Smarty2.x,修飾器可以作用在數(shù)學表達式的結(jié)果上,如{8+2}
, 意味著{8+2|count_characters}
的結(jié)果是2, 因為8+2=10 而 10 是兩個字符長度。 在Smarty3,修飾器將會作用在變量上,或者是在表達式計算前,所以因為 2 是一個字符長度, 所以{8+2|count_characters}
的結(jié)果是9. 如果希望出現(xiàn)原來的結(jié)果,可以使用括號,如{(8+2)|count_characters}
。
修飾器可以從$plugins_dir
目錄中自動加載,或者通過registerPlugin()
來進行動態(tài)注冊。 第二種方法在PHP代碼和smarty模板間共享函數(shù)時很有用。
默認全部PHP函數(shù)都可以作為修飾器,正如上面例子演示的。 然而,使用php函數(shù)作為修飾器會存在兩個小問題:
首先 - 有時函數(shù)參數(shù)的順序并不太一致。如使用 {"%2.f"|sprintf:$foo}
來格式化$foo
是正確的。 但是更直觀的做法,{$foo|string_format:"%2.f"}
是Smarty自身的函數(shù)。
其次 - 如果開啟了安全限制,那么要使用php函數(shù)作為修飾器,就必須通過$modifiers
屬性來進行設(shè)置信任的函數(shù)。 參見安全機制的章節(jié)。
參見 registerPlugin()
, 修飾器組合. 和 Smarty擴展
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: