2011-04-15 159 views
3

我刚开始使用Kohana,并且在渲染简单视图时遇到了一些麻烦。我创建了以下控制器:如何在Kohana中渲染视图

class Controller_Tracer extends Controller { 

    public function action_index() {   
     $this->request->response = View::factory('tracer'); 
    } 

}

然后我创建了一个应用程序/视图/ tracer.php这样的观点:

Tracer view

现在,当我尝试通过http://mydomain/index.php/tracer/index它只是显示访问控制器空白页。它似乎是找到控制器和视图,因为当我更改名称时有错误,但它不显示任何内容。

有谁知道可能是什么问题?

+0

您使用的是什么版本的Kohana? 3.0还是3.1? – 2011-04-15 11:58:27

+0

我建议你检查网络服务器的响应(例如通过Firebug)。可能是它的一个5xx错误。 – biakaveron 2011-04-15 12:02:44

+0

我正在使用3.1.2 – 2011-04-15 12:04:36

回答

5

在Kohana的3.1,你会改用:

$this->response->body(View::factory('tracer')); 

快速浏览一下在文档的migrating from 3.0 to 3.1

+1

谢谢!这将教会不使用Google的快速链接访问文档页面(它目前链接到2.0文档,然后链接到3.0文档但不是3.1)。 – 2011-04-15 12:18:14

+1

好悲伤...改变视图呈现点发布api?!?!?让人惊讶... – jondavidjohn 2012-10-22 22:33:19

4

除了davgothic的解决方案,您还可以使用Controller_Template。使用Controller_Template使其更易于管理模板&内容

class Controller_Tracer extends Controller { 

    public $template = 'yourtemplatefile'; // HTML template inside views folder 

    public function before() { 

     parent::before(); 
     $this->template->title = 'My Website'; 

    } 

    public function action_index() {   

     $this->template->content = 'Hello World'; 
    } 

    public function action_trace() { 
     $this->template->content = View::factory('tracer'); 
    } 
} 

内部的意见/ yourtemplatefile.php:

<html> 
    <head> 
    <title><?php echo isset($title) ? $title : ''; ?></title> 
    </head> 

    <body> 

     <h1><?php echo isset($title) ? $title : ''; ?></h1> 

     <?php echo isset($content) ? $content : ''; ?> 

    </body> 
</html> 

内部的意见/ tracer.php:

<p>This is tracer.</p> 

<p>Nulla vitae elit libero, a pharetra augue.</p> 

如果您尝试访问http://mydomain/index.php/tracer/index,您会得到:

我的网站

的Hello World

如果您尝试访问http://mydomain/index.php/tracer/trace,您将获得:

我的网站

这是示踪剂。

Nulla vitae elit libero,pharetra augue。

希望有所帮助!