Smarty變量

2018-10-12 14:33 更新

模板變量以美元符號(hào)$開(kāi)頭,由字母、數(shù)組和下劃線組成,和 PHP variable相似。 變量可以引用數(shù)字索引或非數(shù)字索引的數(shù)組,對(duì)象的屬性和方法等。

配置變量 是例外的,它不是以美元符號(hào)$開(kāi)頭,而是放到兩個(gè)井號(hào)中間#hashmarks#, 或者通過(guò) $smarty.config來(lái)使用。

Example 3.2. 變量

{$foo}        <-- 顯示簡(jiǎn)單的變量 (非數(shù)組/對(duì)象)
{$foo[4]}     <-- 在0開(kāi)始索引的數(shù)組中顯示第五個(gè)元素
{$foo.bar}    <-- 顯示"bar"下標(biāo)指向的數(shù)組值,等同于PHP的$foo['bar']
{$foo.$bar}   <-- 顯示以變量$bar值作為下標(biāo)指向的數(shù)組值,等同于PHP的$foo[$bar]
{$foo->bar}   <-- 顯示對(duì)象屬性 "bar"
{$foo->bar()} <-- 顯示對(duì)象成員方法"bar"的返回
{#foo#}       <-- 顯示變量配置文件內(nèi)的變量"foo"
{$smarty.config.foo} <-- 等同于{#foo#}
{$foo[bar]}   <-- 僅在循環(huán)的語(yǔ)法內(nèi)可用,見(jiàn){section}
{assign var=foo value='baa'}{$foo} <--  顯示"baa", 見(jiàn){assign}

更多合成變量的方式:

{$foo.bar.baz}
{$foo.$bar.$baz}
{$foo[4].baz}
{$foo[4].$baz}
{$foo.bar.baz[4]}
{$foo->bar($baz,2,$bar)} <-- 傳遞參數(shù)
{"foo"}       <-- 靜態(tài)值

{* 顯示服務(wù)器的環(huán)境變量"SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
{$smarty.server.SERVER_NAME}

數(shù)學(xué)運(yùn)算和嵌入標(biāo)簽:

{$x+$y}                             // 顯示x加y的和
{assign var=foo value=$x+$y}        // 和用于賦值
{$foo[$x+3]}                        // 作為下標(biāo)使用
{$foo={counter}+3}                  // 標(biāo)簽內(nèi)的標(biāo)簽
{$foo="this is message {counter}"}  // 在雙引號(hào)內(nèi)的標(biāo)簽

定義數(shù)組:

{assign var=foo value=[1,2,3]}
{assign var=foo value=['y'=>'yellow','b'=>'blue']}
{assign var=foo value=[1,[9,8],3]}   // 可嵌套

縮寫(xiě)方式:

{$foo=$bar+2}
{$foo = strlen($bar)}               // 函數(shù)賦值
{$foo = myfunct( ($x+$y)*3 )}       // 函數(shù)參數(shù)
{$foo.bar=1}                        // 賦值給特定的數(shù)組元素
{$foo.bar.baz=1}                    
{$foo[]=1}                          // 附加到數(shù)組

Smarty 點(diǎn)號(hào)語(yǔ)法:

{$foo.a.b.c}        =>  $foo['a']['b']['c'] 
{$foo.a.$b.c}       =>  $foo['a'][$b]['c']         // 變量下標(biāo)
{$foo.a.{$b+4}.c}   =>  $foo['a'][$b+4]['c']       // 表達(dá)式下標(biāo)
{$foo.a.{$b.c}}     =>  $foo['a'][$b['c']]         // 嵌套下標(biāo)

類似PHP的語(yǔ)法,另一種點(diǎn)號(hào)的語(yǔ)法:

{$foo[1]}             // 一般的
{$foo['bar']}
{$foo['bar'][1]}
{$foo[$x+$x]}         // 下標(biāo)可以是各種表達(dá)式
{$foo[$bar[1]]}       // 嵌套下標(biāo)
{$foo[section_name]}  // smarty {section} 存取, 非數(shù)組存取!

變量構(gòu)造變量:

$foo                     // 一般的變量
$foo_{$bar}              // 變量名包含了其他變量
$foo_{$x+$y}             // 變量名包含了表達(dá)式
$foo_{$bar}_buh_{$blar}  // 更復(fù)雜的
{$foo_{$x}}              // 如$x = 1,那么將顯示$foo_1的值

對(duì)象鏈:

{$object->method1($x)->method2($y)}

PHP函數(shù)直接使用:

{time()}


  

溫馨提示:

雖然Smarty可以處理很復(fù)雜的表達(dá)式和語(yǔ)法,但是最好的方式還是 保持模板語(yǔ)法的簡(jiǎn)潔,模板層專注于顯示。 如果發(fā)現(xiàn)你的模板語(yǔ)法過(guò)于復(fù)雜,那么建議是將這些邏輯代碼寫(xiě)到PHP里, 然后在模板中通過(guò)插件或者修飾器來(lái)調(diào)用。

服務(wù)器請(qǐng)求的變量,如$_GET$_SESSION也可以通過(guò) $smarty變量來(lái)進(jìn)行獲取。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)