ビュー(+Template)を使ったhello, world![FuelPHP 1.7]
「FuelPHP で Hello World」で hello, world! と出力するコントローラを作成しましたが、ここではビューを使った hello, world! を作成します。
ビューを使う方法はいくつかありますが、 Controller_Template クラスを継承する方法で作成します。
テンプレートと呼ばれる、外枠の HTML を作成し中身を置き換えるように作成します。
テンプレートの作成
app/views ディレクトリに template.php を作成します。
サイト全体に共通する部分を作成し、コンテンツ部分等を置き換える(変数)ようにします。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title><?php echo $title ?></title>
</head>
<body>
<?php echo $content ?>
</body>
</html>
コントローラーの作成
View を簡単に使うには Controller_Template クラスを継承してコントローラを作成します。
app/classes/controller/website.php を次のように作成します。
class Controller_Website extends Controller_Template
{
function action_index()
{
$this->template->title = 'Sample FuelPHP 1.7';
$this->template->content = 'hello, world!';
}
}
以上でテンプレート( View )を使った hello, world! の完成です。 kohana とかなり似ていますね。
継承元 Controller_Template
上記例では、作成した template.php が使われている場所がありません。
継承元である Controller_Template は次のように作成されており、デフォルトで「 template.php 」ファイルを使用するように設計されています。
abstract class Controller_Template extends \Controller
{
public $template = 'template';
public function before()
{
if ( ! empty($this->template) and is_string($this->template))
{
$this->template = \View::forge($this->template);
}
return parent::before();
}
public function after($response)
{
if ($response === null)
{
$response = $this->template;
}
return parent::after($response);
}
}
ざっくり読んでみると、 before メソッドで template.php がロードされ、デフォルトのテンプレートとして出力されています。