バージョン1.6.2でページパーシャルを利用する
仕事で試してみたら意外と使えたので覚え書きに。
手順
ページネータとページネータアダプタをコントローラーで読みこむ
↓
アクションで利用する変数などを登録しておく
↓
アクションで利用するビューを用意し、一手間かける
↓
ページパーシャルを呼び出し、表示させる
超ざっくばらんですが、流れはこんな感じです。
準備
準備はまず、Zend_PaginatorとZend_Paginator_Adapter_Nullをコントローラーで読み込んでおきます。
使ってみる
initとかでまずは以下のようにします。
$this->view->menuPartial = new Zend_Paginator(new Zend_Paginator_Adapter_Null()) ;
ページパーシャルをつかっていますが、Paginatorを使わなくても動作するZend_Paginator_Adapter_Null()を利用し、パーシャルとしてViewに登録します。
Zend_Paginatorも使わないと動かないので注意します。
Viewの準備
コントローラー名でViewを用意します。
今回はMainActionがある物として、「main.phtml」を用意します。
この辺は利用環境に合わせて変更して下さい。
次に、先ほどinitなどで登録した「menuPartial」をView内に以下のように書きます。
<?php$this->paginationControl($this->menuPartial, "All", "main_partial.phtml") ;
?>
これでコントローラーから呼び出されるViewの設定は完了です。
登録したページパーシャルの設定
ページパーシャル内でもコントローラーから登録した変数などは使えますが、一手間かけます。
$thisで参照出来るクラスは「Zend_View」で「_helper」を使えるといえば、使えますが、今回は別な手段で。
Zend_View_Helper_Partialを利用する為、一度変数などで受けます。
「main_partial.phtml」内に以下の用に記述。
<?php$this->getHelper("Partial") ;
?>
これで、Zend_View_Helper_Partialを変数に受ける事が出来ます。
後は、viewに登録された変数を呼び出すので以下のようになります。
<?php$this->view->[アクションで登録した変数名] ;
?>
これで、ページパーシャル内でviewに登録された変数を利用出来ます。
※若干効率悪いかもしれませんが・・・
思ったこと
cakePHPのように、「element」のような物を利用するようにすればもっとシンプルになるのでは?と思いました。
PS
ZF1.6.2でもautoLoaderを使えることを今日初めて知りました・・・。