ビュー(+Template)を使ったhello, world![FuelPHP 1.7]

メモ:  Category:php

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 がロードされ、デフォルトのテンプレートとして出力されています。

bluenote by BBB