Cakephpのページ処理
Cakephpの便利な機能の一つにpaginateがある。この機能を利用するとデータのページ割が効率的にできる。
ページネーションを利用時に、個々のページが何ページ目なのかをページに明示したい場合や総ページ数を表示したい場合はどうすればよいか?例えば、ページのタイトルの末尾に、
現在のページ/総ページ数
を表示する場合には以下の方法で対応できる。
$this->pageTitle = "タイトル"."(".$this->params['paging']['Product']['page']."/".$this->params['paging']['Product']['pageCount'].")";
上の例は、
タイトル(3/10)
のようなタイトルをview側で利用するためにコントローラに記述するコード例です。
参考として、
$this->params[‘paging’]
をvar_dump()してみる。
echo "<pre>"; var_dump($this->params['paging']); echo "</pre>";
array(1) { ["Product"]=> array(10) { ["page"]=> int(1) ["current"]=> int(10) ["count"]=> int(20) ["prevPage"]=> bool(false) ["nextPage"]=> bool(true) ["pageCount"]=> int(2) ["order"]=> array(1) { ["Product.id"]=> string(4) "desc" } ["limit"]=> int(10) ["options"]=> array(0) { } ["paramType"]=> string(5) "named" } }
pageやpageCountのほかに
prevPage
nextPage
というデータも取得できることが確認できる。nextPageがtrueの場合には、次のページが存在することを意味しており、ページ送りのリンク群に特別なcssの属性を付加したい場合などに活用できる。