FuelPHPでSmartyを利用した共通テンプレートの分割
テンプレートの共通的な処理をまとめるため
Controller_Templateを継承したクラスを利用してテンプレートを分割してみます。
コントローラー
継承元となるクラス。ここで各画面で共通なテンプレートを呼び出します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
vi fuel/app/classes/controller/basetemplate.php <?php class Controller_BaseTemplate extends Controller_Template { public function before() { parent::before(); $this->template->parts_header_block = View_Smarty::forge('parts/header'); $this->template->parts_footer_block = View_Smarty::forge('parts/footer'); } public function after($response) { $response = parent::after($response); return $response; } } |
上のクラスを継承したコントローラー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
vi fuel/app/classes/controller/sampletemplate.php <?php class Controller_SampleTemplate extends Controller_BaseTemplate { public function action_index() { $t_params = array( 'message' => 'smarty template テスト' ); $this->template->content = View_Smarty::forge('parts/content', $t_params); } } |
テンプレート
まず枠となるテンプレート
※Controller_BaseTemplateでファイル名を指定することもできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
vi fuel/app/views/template.php <html> <body> <header> <?php echo $parts_header_block; ?> </header> <div id="content"> <?php echo $content; ?> </div> <footer> <?php echo $parts_footer_block; ?> </footer> </body> </html> |
継承元となるクラスで指定したテンプレート
1 2 3 4 |
vi fuel/app/views/parts/header.smarty footer.smarty |
1 2 3 4 |
vi fuel/app/views/parts/footer.smarty header.smarty |
コントローラーで指定した変数を表示するテンプレート
1 2 3 4 |
vi fuel/app/views/parts/content.smarty {$message} |
http://ドメイン/sampletemplate/
にアクセスすると確認できます。