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