我有一个模板控制器(例如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';
}
......等等, 有可能吗?
答案 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');
据我了解,这就是它的工作方式。