Nullyのぶろぐ

仙台から東京へ転勤したエンジニアのブログ

バージョン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を使えることを今日初めて知りました・・・。