我是Kohana框架中的新人。
我想在视图中创建控制器和显示变量。
我的控制器Start.php:
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Start extends Controller_Template {
public function action_index()
{
$view = View::factory('start')
->set('title', array('tytul 1', 'tytul 2'));
$this->response->body($view);
}
}
APPPATH / views中的有Start.php:
<h1><?php echo $title[0] ?></h1>
当我打开网站时出现错误:
View_Exception [ 0 ]: The requested view template could not be found
当我使用以下内容显示操作数据时:
$this->response->body('test');
当我打开网站时有“测试”
我的观点有什么问题?
答案 0 :(得分:0)
您的控制器缺少模板定义Piotr。
您在Controller中需要做的是定义控制器需要使用的视图:
class Controller_Start extends Controller_Template {
// This has to be defined
public $template = 'start';
public function action_index()
{
$this->template->set('title', array('tytul 1', 'tytul 2'));
// No need to do this if you're extending Controller_Template
// $this->response->body($view);
}
}
my_view
是位于/application/views
文件夹中的模板文件的文件名(不带.php扩展名)。如果它在子文件夹中,则在那里提供,例如:
public $template = 'subfolder/start';
请注意,必须将其定义为字符串,因为Controller_Template::before()
方法会将其转换为View object。这意味着您不必在$view
内创建自己的action_index()
对象,除非您想覆盖默认对象。然后你需要做类似的事情:
class Controller_Start extends Controller_Template {
public function action_index()
{
$view = View::factory('start')
->set('title', array('tytul 1', 'tytul 2'));
$this->template = $view;
// And that's it. Controller_Template::after() will set the response
// body for you automatically
}
}
如果您希望完全控制模板并且不希望Kohana干涉我建议不要扩展Controller_Template
类,而是使用普通Controller
和自己渲染视图,例如:
class Controller_Start extends Controller {
public function action_index()
{
$view = View::factory('start')
->set('title', array('tytul 1', 'tytul 2'));
// Render the view and set it as the response body
$this->response->body($view->render());
}
}