Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 如何为Kohana 3中控制器内部的每个视图使用不同的模板?_Templates_Controller_Kohana 3 - Fatal编程技术网

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

Templates 如何为Kohana 3中控制器内部的每个视图使用不同的模板?,templates,controller,kohana-3,Templates,Controller,Kohana 3,我有一个模板控制器(ex.Controller\u DefaultTemplate),其他人(ex.Controller\u Admin)正在扩展它。在tutiorials(例如此处)中,他们在Controller_DefaultTemplate中这样做: public$template='admin/index' 但我需要不同的意见,为不同的行动内 class Controller_Admin extends Controller_DefaultTemplate { funct

我有一个模板控制器(ex.Controller\u DefaultTemplate),其他人(ex.Controller\u Admin)正在扩展它。在tutiorials(例如此处)中,他们在Controller_DefaultTemplate中这样做:

public$template='admin/index'

但我需要不同的意见,为不同的行动内

    class Controller_Admin extends Controller_DefaultTemplate {
    function action_material(){ 
        $template = 'admin/material';
}
    function action_newsedit(){ 
        $template = 'admin/newsedit';
}
。。。等等 可能吗?

当然可以,就像这样:

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

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

另一种方法是使用
set\u filename()
方法设置视图的文件名。使用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');
}

模板是所有视图的包装器。在模板中,您将拥有
,然后在操作中,您只需调用视图,将其放置在该模板中<代码>$this->template->content=View::factory('page')
据我所知,这就是它的工作原理。

在这两种情况下,我都会遇到
Kohana\u View\u异常[0]:无法找到请求的视图模板
error您需要一个已经存在的默认模板(before()仍然需要运行并生成模板文件)。在默认情况下,它是views/template.php