要するに、CakePHPで言う、layoutみたいなことがやりたいわけだ
サイトのページで共通する ヘッダー部分とか フッター部分は どこか1箇所に書きたい
本家のやり方は、結局Controllerに毎回 header footerを書かなきゃならないから、だめじゃん?
ビュー : CodeIgniter ユーザガイド 日本語版http://codeigniter.jp/user_guide_ja/general/views.html→複数のビューの読み込み
・hookを使ってみる
CIにはviewクラス的なものがないから、cakeのコントローラのCallbackメソッド(beforeFilterとかafterFilterとか)的なものを探したら、hookがそれにあたる(?)ぽいので、やってみる
・共通ヘッダー&フッターを作成(View)
app/views/parts_hook┠ header.php┗ footer.php※それぞれ HTMLのヘッダー部分とフッター部分
・自前hookクラスを用意
app/hooks/ControllerCallback.php
/*** ControllerCallback Class*/class ControllerCallback {/*** beforeFilter - post_controller_constructor*/public function beforeFilter(){// 共通ヘッダー$ci =& get_instance();$ci->load->view('parts_hook/header');}/*** afterFilter - post_controller*/public function afterFilter(){// 共通フッター$ci =& get_instance();$ci->load->view('parts_hook/footer');}}
・hook設定
app/config/hooks.php
/*| --------------------------------------| Hooks| --------------------------------------| This file lets you define "hooks" …略$hook['post_controller_constructor'] = array('class' => 'ControllerCallback','function' => 'beforeFilter','filename' => 'ControllerCallback.php','filepath' => 'hooks');$hook['post_controller'] = array('class' => 'ControllerCallback','function' => 'afterFilter','filename' => 'ControllerCallback.php','filepath' => 'hooks');
※'params'は使ってない
参考)
フック : CodeIgniter ユーザガイド 日本語版http://codeigniter.jp/user_guide_ja/general/hooks.html
これで、共通ヘッダーとフッターは表示された
うーんでも、これだと、ヘッダーの中の<title>とかを動的に設定したい(各コントローラーで指定したい)ときに、だめだなあ…
ということで、続く
0 件のコメント:
コメントを投稿