2012年7月18日水曜日

FuelPHPのテンプレートコントローラ

テンプレートコントローラを使うことで1つのページを複数のファイルに分割し、部品化できます。

まず、全体レイアウトを定義するビューファイル fuel/app/views/template.php を作成します。
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title><?php echo $title; ?></title>
</head>
<body>
    <div id="contents">
        <?php echo $content; ?>
    </div>
    <div id="footer">
        <?php echo $footer; ?>
    </div>
</body>

</html>

変数が $title , $content , $footer 3つあることがわかります。
この3つの変数にそれぞれ値をセットして1ページを作っていきます。

まずは $content の部分に読み込ませるビューファイル fuel/app/views/layout/index.php を作成します。
<h2><?php echo $title; ?></h2>
<p>Hello, <php echo $user; ?>!</p>

次に $footer の部分に読み込ませるビューファイル fuel/app/views/footer.php を作成します。
<p>Copyright&copy;2012</p>


ビューにはこの3つのファイルを作成します。
説明はあとにしてコントローラ fuel/app/classes/controller/layout.php を作成します。
<?php
class Controller_Layout extends Controller_Template
{
    public function action_index()
    {
        $data = array();
        $data['user'] = 'hayashida';

        $this->template->set_global('title', 'テンプレートコントローラの練習');
        $this->template->content = View::forge('layout/index', $data);
        $this->template->footer = View::forge('layout/footer');
    }
}

こんなかんじになります。

てことで簡単に説明。

変数 $title は template.php と layout/index.php の2つのビューファイルで使われています。
複数のビューファイルで同じ変数を使用する場合 set_global メソッドを使います。

変数 $content と $footer はビューファイルの中身が入ります。
それぞれのビューファイルで変数を使用する場合は、第2引数に値を入れてあげます。

http://127.0.0.1/fuelphp/public/index.php/layout


また、今回はテンプレートとなるビューファイル fuel/app/views/template.php としましたがこれはデフォルトです。
もちろん変更することも可能です。
テンプレートファイルを変更する場合は
<php
class Controller_Layout extends Controller_Template
{
    public $template = 'template_view';

    public function action_index()
    {

    }
}
こんなかんじで変数 $template にテンプレートファイルを指定するだけです。
ただ、テンプレートはコントローラ単位でしかできないみたいです。
(メソッド単位では変更できない)


参考までドキュメント
http://docs.fuelphp.com/general/controllers/template.html


0 件のコメント:

コメントを投稿