2011-11-03 28 views
1

我不明白在Kohana中使用模板的目的。除了模板控制器綁定到給定的模板,並且靈活性較差之外,我發現在使用模板控制器與常規控制器構建視圖的過程中幾乎沒有區別。有什麼優勢?爲什麼在Kohana中使用模板?

建築視圖與普通控制器:

Class Controller_Hello extends Controller 
{ 
    public function action_index() 
    { 
     $view = View::factory('page'); 
     $view->page_title = 'My Hello App'; 
     $view->content = 'hello, world!'; 
     $view->sidebar = View::factory('parts/sidebar'); 
     $this->response->body($view); 
    } 
} 

大廈觀點與模板控制器:

Class Controller_Hello extends Controller_Template 
{ 
    public $template = 'page'; 

    public function action_index() 
    { 
     $this->template->page_title = 'My Hello App'; 
     $this->template->content = 'hello, world!'; 
     $this->template->sidebar = View::factory('parts/sidebar'); 
    } 
} 

回答

3

Controller_Template只是你如何實現自己的模板 - 系統的例子。 它不是即時可用的解決方案(至少對於我的項目通常)。檢查這一個控制器(它也不是準備使用的解決方案,但它可能會幫助您瞭解擴展不同控制器用於不同目的的要點):http://pastie.org/2563595

+0

讓人有道理感謝 – Yarin

0

我確信還有其他更好的解決方案可用於模板系統。但爲什麼我在Kohana中使用模板?

想想多個頁面,全部基於一種佈局/設計方案。因此,我使用特定視圖構建模板控制器,定義佈局/設計,定義內容,頁眉和頁腳「區域」。在模板控制器中,我加載CSS文件和腳本文件,設置網站的標題和元值,因爲每個站點都使用這些具有相同元值和標題的CSS /腳本文件。

因此,在每個控制器擴展模板控制器我不需要重新加載CSS /腳本文件,設置元值和標題等......但我可以改變所有這些值,也許只添加一個CSS文件爲一個單一的網站。

也許所有提到的網站都有相同的頁腳和/或頁眉:我將頁眉/頁腳視圖分配給模板控制器中的模板,所以我不需要在擴展模板控制器的所有控制器中這樣做。或者在一個控制器中的所有操作都有相同的頁眉/頁腳,所以我在控制器的before()函數中分配了少量頁眉和頁腳...

對於我來說,kohana中的模板是一個很好的工具,應用。

相關問題