1. 程式人生 > 實用技巧 >Smarty 之基本應用

Smarty 之基本應用

Smarty 引擎既然是分離 Web 應用程式邏輯層和表現層的工具,目的也是讓應用程式設計師和美工分開扮演不同的角色,所以程式設計師和美工都應該學習和使用Smarty ,但學習內容有所不同。作為程式設計師需要學習Smarty 的“模板程式設計師篇”,主要內容有:

一、Smarty 引擎安裝。

二、變數的分配和載入顯示模板。

三、以外掛行駛擴充套件Smarty。

四、快取控制技術。

五、編寫Smarty 模板的基本語法。

六、變數。

七、變數修改器和組合修改器。

八、自定義函式。

九、Smarty 內建函式。

十、模板繼承機制。

PHP 程式設計師學習的內容相對於美工來說還是比較容易,除了 PHP 是語法外,基本上不涉及其他的內容,只需要按Smarty 的語法規則進行程式設計即可。而大量的Smarty 應用還是在美工的模板設計上,因為美工平時就很少接觸有些業務邏輯,所以在模板中使用的一些Smarty 語法對於他們來說還是有點難度。當然模板引擎在設計的時候也會考慮美工的基礎,儘量將Smarty 在模板中使用的語法向美工熟悉的 HTML 語法靠攏。

PHP 程式設計師常用的和Smarty 相關的操作;在使用Smarty 技術開發專案時, PHP 程式設計師除了需要完成整個專案的業務邏輯還要把使用者請求的動態內容通過Smarty 引擎交給模板去顯示。Smarty 是安裝前面已經介紹,擴充自定義外掛和快取控制技術後面有單獨的介紹,PHP 的變數分配和載入模板進行顯示,這個是通過訪問Smarty 物件中的方法完成,前面也只使用過一次,這裡有必要正式介紹一下 assign()和 display()這兩個方法。

assign()方法

在PHP 指令碼中呼叫這個方法可以為Smarty 模板檔案中的變數賦值,可以傳遞一對名稱/數值對,也可以傳遞包含名稱和數值對的關聯陣列。它的使用方法比較簡單,原型如下:

void assign(string varname,mixed var)    //傳遞一對名稱/數值對到模板中
void assign(mixed var)                          //傳遞包含名稱/數值的關聯陣列到模板中

通過呼叫Smarty 物件中的assign()方法可以將任何 PHP 所支援的型別資料賦值給模板中的變數,包含陣列和物件型別。下面給出使用兩個方式分配變數到模板中,也就是制定一對“名稱/數值”和指定包含“名稱/數值”的聯合陣列:

//指定一對“名稱/數值”的使用方式
$smarty->assign("name","Fred");        //將字串“Fred”賦給模板中的變數{$name}
$smarty->assign("address","$address");        //將變數賦$address的值賦給模板中的變數{$address}
//指定包含“名稱/數值”的聯合組數的使用方式
$smarty->assign(array("city"=>"Lincokn","state"=>"Nebraska"));    //這種方式很少使用

display()方法

基於Smarty 的指令碼中必須用到這個方法,而且在一個指令碼中只能使用一次,因為它負責獲取和顯示由Smarty 引擎應用的模板。這個方法的原型如下:

Vold display (string template [,string cache_id [,string compile_id]])  //用來獲取和顯示 Smarty 模板