「コントローラーを作成[kohana 3.x]」でhello, world!と出力するコントローラを 作成しましたが、ここではテンプレート(View)を使ったhello, world!を作成します。
Viewを使うにはいくつかの方法がありますが、Controller_Templateクラスを継承する方法で作成してみます。
applicationディレクトリにviewsディレクトリを作成しtemplate.phpを作成します。
(例:public_html/ko3/application/views/template.php)
サイト全体に共通する部分を作成し、コンテンツ等を差し替えるようにします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <title><?php echo Html::Chars($title) ?></title> </head> <body> <?php echo $content ?> </body> </html>
Controller_Templateクラスを継承してController_Websiteクラスを作成します。
(application/classes/controller/website.php)
<?php defined('SYSPATH') OR die('No Direct Script Access'); Class Controller_Website extends Controller_Template { function action_index() { $this->template->title = 'Sample kohana 3.x'; $this->template->content = 'hello, world!'; } }
以上でテンプレート(View)を使った hello, world! の完成です。
継承元であるController_Templateの実体は、system/classes/kohana/controllerディレクトリのtemplate.phpです。
Controller_Websiteクラスで参照したtemplateは、継承元に定義されています。
public $template = 'template'; public function before() { if ($this->auto_render === TRUE) { // Load the template $this->template = View::factory($this->template); } }
beforeメソッドでViewのインスタンスが生成され、requestオブジェクトのresponseプロパティへセットされます。
public function after() { if ($this->auto_render === TRUE) { $this->request->response = $this->template; } }
最終的にbootstrap.phpのechoによって出力されます。
echo Request::instance() ->execute() ->send_headers() ->response;
Copyright 1997-2010 BBB All rights reserved.