我有一个扩展Kohana模板类的Kohana控制器。 Kohana模板类有
const CONTENT_KEY = 'content';
在此控制器中,我已声明要使用的模板视图:
public $template = 'homepage_template';
同样在这个控制器中我有一些方法和一些相关的视图。
拥有所有这些功能,当我在 homepage_template 视图中echo $content
时,没有任何内容显示(属于来自此控制器的操作的视图中没有内容)。 (我在动作中有auto_render为true)。可能是什么原因?
答案 0 :(得分:1)
这就是我如何使用模板控制器,希望它会有所帮助:
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Template_Default extends Controller_Template
{
public $template = 'templates/default';
protected $auth;
protected $user;
public function before()
{
parent::before();
Session::instance();
$this->auth = Auth::instance();
if (($this->user = $this->auth->get_user()) === FALSE)
{
$this->user = ORM::factory('user');
}
if($this->auto_render)
{
$this->template->title = '';
$this->template->meta_keywords = '';
$this->template->meta_description = '';
$this->template->meta_copywrite = '';
$this->template->header = '';
$this->template->content = '';
$this->template->footer = '';
$this->template->styles = array();
$this->template->scripts = array();
$this->template->bind_global('user', $this->user);
}
}
public function after()
{
if($this->auto_render)
{
$styles = array('css/default.css' => 'screen', 'css/reset.css' => 'screen');
$scripts = array('js/infieldlabel.js', 'js/menu.js', 'js/jquery.js');
$this->template->styles = array_reverse(array_merge($this->template->styles, $styles));
$this->template->scripts = array_reverse(array_merge($this->template->scripts, $scripts));
}
parent::after();
}
} // End Controller_Template_Default
P.S。你不应该对内容使用常量。 从Controller_TEemplate_Default扩展您的控制器并将其绑定为$ this-&gt; template-&gt; content = View :: factory('view of the view');