FuelPHPのビューを入れ子にする

Templateコントローラとビューの入れ子がごっちゃ。
両方使いこなせたら便利そうだとは思う。

先に、ビューの入れ子について学ぶ。

あと、入れ子ってネストって呼ぶんだね。

1.ビューの入れ子

ビューの入れ子とは、ヘッダー・フッターなどのパーツを別のビューファイルとして用意して、必要に応じて読み込むこと。

親ビューファイルの中で、子ビューファイル(ヘッダー・フッター)を echo するようにしておく。
子ビューファイルは、変数として引き渡される。

親ビューファイルのサンプル(fuelphp/app/views/layout.php)。

<html>
<head>
<?php echo $head; ?>
</head>
<body>
<?php echo $header; ?>
<?php echo $content; ?>
<?php echo $footer; ?>
</body>
</html>

2.入れ子にされたビューに変数を渡す

Contoroller 側では、親ビューファイルを読み込む際に、$head,$header,$content, $footerの各変数を引き渡す。

とりあえず、$head だけに絞ってやってみる。
まず、$head に引き渡す子ビューファイル用に、fuelphp/app/views/head.php を作成。

<title><?php echo $title; ?></title>

Controller 内で $head に値を渡す場合、この $head 内の $title にも値を渡さないといけない。
set_gloval()メソッドを使う(set()メソッドだと渡せない)。

<?php
class Controller_Multiview extends Controller
{
    public function action_index()
    {
        $view = View::forge('layout');
        // 子ビューへはグローバル変数を割り当てる
        $view->set_global('title','タイトル!');
        // こっちは通常通り
        $view->head = View::forge('head');
        return $view;
    }
}

ドキュメントだと、この方法「遅延レンタリングを使用」らしいんだけど、どういう意味かわからん・・・
勉強しなくては・・・

他の方法はまた今度追記するか記事書こう。

参考

Views – 概要 – FuelPHP ドキュメント

コメント

タイトルとURLをコピーしました