smarty 使用心得

近些時間都是自己在開發php 程序,沒有用一些常見的CMS來改造,自己開發的程式在外觀上難免不好看,或者是要花大段時間去做修飾,所以選用上smarty 作為界面來輔助開發,感覺是相當方便的,假如有自己製作過一些著名CMS的主題,應該會很容易上手,我想理論是差不多的。

smarty現在已經出到3了,但我還是用2的,因為php版本的關係吧。但2對我來說已經足夠。如何開始使用smarty,也許官方網站的說明幫到你,有豐富的例子說明,對我來說幫助很大。但對於我這初學者來說,最大的問題就是不知道某些function的存在,導致在php那邊花了很多時間。

用上了smarty,基本上在php只是傳值就可以,在每個php文件上,把要傳到template的value都打上就可以

$smarty->assign(‘template調用的值’, ‘php的值’);
$smarty->display(‘index.tpl’); //這個就是調用的template文件

我基本上用得最多的就是section,它是一個循環,在database上while loop調用的值,都裝到一個array上,然後就可以在template上用{section}{/section}來調用值,而且section 有很多屬性,有name, start, loop, step,這些都很方便,name可以像javascript那樣取得這個section的一些值,例如$smarty.section.foo.index,foo就是name的名稱,index就是循環到哪了。start就是開始的index,loop循環次數,step就是每次間隔index,假如寫再php,也許要for loop,而且還要$i+2 之類,現在只要改一個數字就可以,十分方便。

接著用得最多還是{if}{elseif}{/if},可以用來判斷值,例如在section中判斷{if $smarty.section.foo.index eq 2}do something{/if},eq 就是等於的意思,這個我常用來作為修飾一些默認取值。十分好用

{foreach}也用的更多,用法和section 差不多,直接可以來輸出array值.

在php 中經常用到表單form,這裡會有很多值,還有不同的方式GET,POST, smarty也可以取得form傳輸的值:{$smarty} reserved variable,例如form傳出的值是page,方式用get,那麼就可以直接$smarty.get.page得到傳出的值,還可以用session來判斷,可以說很方便。

由於某些特殊的需要,要把一堆string換成array,雖然php 有explode,但是explode出來只是為了方便看,smarty應該有相關的方法,沒錯,{assign var=foo value=”,”|explode:$config.siteUrl} 這樣就可以把值存到foo中,在表單中得到multi selection時就會用上。

smarty的確很強大,我也看了3版本的介紹,應該是更加方便和標準化,有空再繼續研究。