Zend_Paginator を使ってみる。
こんにちわ。
Sydney に渡って前半開発に頑張りすぎて肩こりが酷くなったので、たまには運動しないとと思い最近 15 年くらいやってて多少自信があったスケボーを購入してやり始めたんですが、2 週間目で疲労骨折気味になってしまい、全く動けなくなっている convexstyle です。意味ねえ…
・・・・・
最近のプロジェクトで Zend_Paginator を初めて使ってみました。
今までは PEAR::Pager を使っていたけど、Zend Framework に入ってなかなか便利だというのを聞いていたので使ったが便利だった。
Zend_Paginator_Adapter_DbSelect はかなり良いらしいが、今回は CMS の API 経由で XML をパースして表示する形式だったので、シンプルに Zend_Paginator_Adapter_Array をアダプタとしては使用した。
ページにどの様に表示するかは CSS/XHTML とテンプレートエンジン(Smarty など)の問題なので、色々やり方はあるしそこまで重要では無いが、重要な点はどの様に URI の syntax をテンプレートエンジンのレンダリング結果に受け渡すかだろう。
まずはどの様な値が Zend_Paginator から返されるか dump してみる。
$_paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array($_data));
$_paginator->setCurrentPageNumber($_pageId);
$_paginator->setItemCountPerPage($this->_pagerIni->blog_per_page);
$_paginator->setPageRange($this->_pagerIni->page_range);
Zend_Debug::dump($_paginator->getPages('Sliding'));
結果は stdClass 形式で下記の様に返される。
object(stdClass)#69 (12) {
["pageCount"]=>
int(1)
["itemCountPerPage"]=>
int(3)
["first"]=>
int(1)
["current"]=>
int(1)
["last"]=>
int(1)
["pagesInRange"]=>
array(1) {
[1]=>
float(1)
}
["firstPageInRange"]=>
float(1)
["lastPageInRange"]=>
float(1)
["currentItemCount"]=>
int(2)
["totalItemCount"]=>
int(2)
["firstItemNumber"]=>
int(1)
["lastItemNumber"]=>
int(2)
}

