Moduleを利用し個々のLayoutを利用する
自サイトを作る上で、どうやれば良いのかを検証してみて、余りスマートでは無いかもしれないが、思いついたのでメモ!
まずは作る
まずは適当にzf create project でプロジェクトを作成します。
作成完了後、以下のようにmodule群を作る。
zf create module '[module_name]'
これでモジュールをいくつか作る。
※module_nameは作成するモジュール名を入力します
作ったら
applications/application.ini内でlayoutに関する項目を設け、パスの定義を記述します。
layout.path = APPLICATION_PATH "views/layouts"
iniの設定が完了したら
applications/Bootstrap.php内で、「protected function _initLayout」等のようなメソッドを定義します。
定義したらば、以下のように記述。
$layout = $this->getOption("layout") ; // application.iniで定義したlayout項目を取得new Zend_Layout($layout["path], true) ; // 新規Layout を定義する
ここまでで、layoutまでのパスを定義が完了。
Layoutパスなどの定義が完了したら
module内にあるcontrollers/以下のinitメソッドにて、以下のように記述します。
$request = $this->getRequest() ;$module = $request->getParam("module") ;
$this->_helper->layout->setLayout($module) ;
これでモジュール単位のレイアウトを呼び出すことが可能になります。
メソッドの定義が完了したら
先ほどiniファイルで定義したパスに「module名.phtml」でhtmlベースを作成し保存します。
これで全ての作業が完了です。
もっとスマートに出来るよ!という情報があれば教えていただければと思います。。。
PS.本当はBootstrap.php内でレイアウトの呼び出しもすませたかったのですが、どうにもZend_Controller_Request_Httpとか使っても、Requestオブジェクトにmodule名などが入ってこなかったのでこんな形になりました。。。