如何在Kohana 3中为控制器内的每个视图使用不同的模板?

时间:2011-03-01 11:14:10

标签: templates controller kohana-3

我有一个模板控制器(例如Controller_DefaultTemplate)和其他(例如Controller_Admin)正在扩展它。在tutiorials(例如这里http://www.dealtaker.com/blog/2009/12/30/kohana-php-3-0-ko3-tutorial-part-3/)他们在Controller_DefaultTemplate中这样做:

public $template = 'admin/index';

但我需要对

内的不同操作有不同的看法
    class Controller_Admin extends Controller_DefaultTemplate {
    function action_material(){ 
        $template = 'admin/material';
}
    function action_newsedit(){ 
        $template = 'admin/newsedit';
}

......等等, 有可能吗?

3 个答案:

答案 0 :(得分:3)

另一种方法是使用set_filename()方法设置View的文件名。使用zombor的样式,您将丢失为$this->template设置的所有变量。

public function action_newsedit()
{
    // note that $this->template is already View object as we are in Controller_Template
    $this->template->set_filename('admin/newsedit');
}

答案 1 :(得分:0)

当然,就像这样:

public function action_newsedit()
{
    $this->template = new View('admin/newsedit');
}

模板是在控制器的构造函数中创建的,因此您只需在操作中覆盖它。

答案 2 :(得分:0)

模板是所有视图的包装器。在模板内部,您将拥有<?php echo $content; ?>,然后在操作中,您只需将视图调用放置在该模板内。 $this->template->content = View::factory('page');据我了解,这就是它的工作方式。