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; } }
ドキュメントだと、この方法「遅延レンタリングを使用」らしいんだけど、どういう意味かわからん・・・
勉強しなくては・・・
他の方法はまた今度追記するか記事書こう。
コメント