为什么在Kohana中使用模板?

时间:2011-11-03 19:56:27

标签: templates kohana kohana-3

我不明白在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');
    }
}

2 个答案:

答案 0 :(得分:3)

Controller_Template只是您如何实现自己的模板系统的一个示例。 它不是随时可用的解决方案(至少对我的项目而言)。检查这个控制器(它也不是现成的解决方案,但它可能会帮助您理解为不同目的扩展不同控制器的意义):http://pastie.org/2563595

答案 1 :(得分:0)

我确信还有其他可能更好的模板系统解决方案。但为什么我在Kohana中使用模板?

考虑多个页面,所有页面都基于一个布局/设计方案。所以我使用某个视图构建模板控制器,定义布局/设计,定义内容,页眉和页脚“区域”。在模板控制器中,我正在加载CSS文件和脚本文件,设置网站的标题和元数值,因为每个网站都使用这些具有相同元值和标题的CSS /脚本文件。

所以在扩展模板控制器的每个Controller中我都不需要重新加载CSS /脚本文件,设置元值和标题等......但是我可以更改所有这些值,也许只添加一个CSS文件一个网站。

也许所有提到的网站都有相同的页脚和/或标题:我将页眉/页脚视图分配给模板控制器中的模板,因此我不需要在扩展模板控制器的所有控制器中执行此操作。或者一个控制器中的所有操作都具有相同的页眉/页脚,所以我在控制器的before()函数中为页眉和页脚分配了少量...

对我来说,kohana中的模板是构建小型Web应用程序的好工具。