Zend Framework 與Smarty 的完美整合!

廢話就不說了,思路是這樣的:

1. 先把smarty 類庫引入項目目錄中,建立好smarty 所需要的一些目錄(編譯目錄、緩存目錄等);
2. 在library 目錄下新建一個文件Templater.php,這個文件中的Templater 類即是採用smarty 後的新的視圖類,它繼承自Zend_View_Abstract,注意在這個類中要根據smarty 的操作規則重寫Zend_View_Abstract 的一些方法,這樣的話,在控制器中我們還是使用Zend_View_Abstract 的視圖操作方式但本質上卻換成了smarty;
3. 在application/Bootstrap.php 文件的添加一個方法_initSmarty 以初始化smarty 並替代原來的模板顯示機制;
4. 大功告成,在控制器上的操作與原來沒有什麼不同,不過此時已經是用smarty 來渲染視圖了。

注意:本例中測試的Zend Framework 版本是1.9.x,其他版本可能需要做一些相應的調整。

下面附上一些主要的代碼,有疑問的話可跟貼詢問 ^_^

下面我們來做一個簡單的測試

先寫一個簡單的模板文件application/views/index/index.html:

然後是控制器文件application/controllers/IndexController.php:

訪問相應的頁面(例如 http://localhost/zendframeworkwithsmarty/ )即可看到Hello World 字樣的輸出。

 

一個常見的問題:如何在模板文件中獲得項目基地址的引用?

這確實是一個必須要解決的問題,知道的基地址才能夠正確的載入外部js/css 文件以及正確的實現頁面間的跳轉。

:Zend_Controller_Front 類的getBaseUrl 方法可以獲取項目基地址,但每次要先獲取該實例再調用方法確實很麻煩,可以這樣做,新建一個視圖助手Zend_View_Helper_BaseUrl,在該視圖助手類中定義一個方法(例如baseUrl)以獲取基地址,這樣在控制器中就可以通過$this->view 對象來調用該方法了($this->view->baseUrl())

 

參考至 《PHP Web 2.0開發實戰》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章