paginateで現在のページ番号と総ページ数を取得

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の属性を付加したい場合などに活用できる。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

paginateで現在のページ番号と総ページ数を取得の記事にコメントを投稿