テンプレートコントローラは、テンプレート機能(レイアウト機能)を提供するコントローラの拡張の一つ。
テンプレートコントローラについて、公式ドキュメントより抜粋。
Template コントローラは、ベースとなるコントローラの拡張で、いくつかの定義済みの before() と after() メソッドを使用することで、テンプレート機能を持っています。 基本的に、 ヘッダ、フッタ、サイドバーなどを持つレイアウトで、ビューをラップします。
なるほど(意味がわからんな)。
1.テンプレート機能とレイアウト機能
参考にしてる2つの参考書では、テンプレートコントローラは、テンプレート機能またはレイアウト機能を提供する、って書いてある。
これって同じ機能のことなんだろうか。
「FuelPHP入門」では
テンプレートコントローラとはControllerクラスのサブクラスで、定義済みのbefore()とafter()によってテンプレート(各ページが共通で用いるビュー)をビューとして読み込むものです。
「はじめてのフレームワークとしてのFuelPHP」では
レイアウト機能とは、1 つのHTML ページを複数のビューファイルに分割し、部品化する方法です。
比較すると同じ機能だってわかる。
ヘッダーとフッターは共通だけど、body(コンテンツ)はページごとに違うって時に使うものなのか。
でもこれって、「ビューの入れ子」とは違うのか(FuelPHPのビューを入れ子にする)。
ビューの入れ子は、ビューからビューを読み込むことだったけど。。。
2.テンプレートコントローラについて
テンプレートコントローラは、骨組みであるhtmlは同じだけど、コントローラから渡す値によってレイアウトや表示するコンテンツが違う、って解釈でいく。
自信ないけど・・・
テンプレートコントローラは、定義済みの before() と after() によって各ページで共通するビューを読み込む(ここは次回)。
デフォルトは APPPATH/views/ の template.php を読み込むらしいが、初期はないよね?
テンプレートコントローラにはあらかじめ templateプロパティが用意されている。
このプロパティを変更することで、ビュー名を設定する。
Controller_Template を継承して、Controller_Exampleクラスを作成する。
ビュー名は、example_template とし、これでAPPPATH/views/example_template.phpを作っておけばOK。
class Controller_Example extends Controller_Template { public $template = 'example_template'; public function action_index() { ... } }
まだ勉強不足。
参考
Template コントローラ – 概要 – FuelPHP ドキュメント
コメント