【FuelPHP】Templateを利用して、Viewの共通テンプレートを作成
概要
FuelPHPのTemplateを利用して、Viewのヘッダー、フッターなどの共通テンプレートを作成します。
コンテンツはアクション毎に変更をします。
1.テンプレートを作成
\fuelphp\fuel\app\views\ 配下にテンプレート用のファイル(template.php)を作成します。
<!DOCTYPE html> <html> <head> </head> <body> <header> // header.phpファイルを読み込む <?php echo $header; ?> </header> <main> // 各アクションの内容を読み込む <?php echo $content; ?> </main> <footer> // footer.phpファイルを読み込む <?php echo $footer; ?> </footer> </body> </html>
2.ヘッダー、フッター用のテンプレートを作成
\fuelphp\fuel\app\views\ 配下にフォルダを作成して、ヘッダー、フッター用のテンプレートを作成します。
\fuelphp\fuel\app\views\parts\header.php
\fuelphp\fuel\app\views\parts\footer.php
// header.php <div> <?php echo 'ヘッダー表示'; ?> </div>
// footer.php <div> <?php echo 'フッター表示'; ?> </div>
3.共通Controllerを作成
Controller_Templateを継承したController_Baseを作成します。
今後、ここで共通なものを一箇所にまとめることができます。
\fuel\app\classes\controller\ 配下にbase.phpを作成します。
<?php class Controller_Base extends Controller_Template { public function before() { // テンプレートを動作させるために必要 parent::before(); //header.phpをテンプレートの$headerとbindさせる。 $this->template->header = View::forge('parts/header'); //footer.phpをテンプレートの$footerとbindさせる。 $this->template->footer = View::forge('parts/footer'); } public function after($response) { // 自身のレスポンスオブジェクトを作成する場合は必要なし $response = parent::after($response); // after() は確実に Response オブジェクトを返すようにする。 return $response; } }
4. Controller_Baseを継承したコントローラーを作成
\fuel\app\classes\controller\ 配下にwelcome.phpを作成します。
<?php class Controller_Hello extends Controller_Base { public function action_index() { //template.phpのcontentとアクション毎のviewをbindさせる $this->template->content = View::forge('welcome/index'); } }