Kohana模板$ content变量什么都没有显示

时间:2012-01-27 14:34:51

标签: templates kohana

我有一个扩展Kohana模板类的Kohana控制器。 Kohana模板类有

const CONTENT_KEY = 'content';

在此控制器中,我已声明要使用的模板视图:

public $template = 'homepage_template';

同样在这个控制器中我有一些方法和一些相关的视图。

拥有所有这些功能,当我在 homepage_template 视图中echo $content时,没有任何内容显示(属于来自此控制器的操作的视图中没有内容)。 (我在动作中有auto_render为true)。可能是什么原因?

1 个答案:

答案 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');