【CakePHP】ページネーションの基礎の基礎
ページネーションとは?
たくさん並んだデータをページ分けして、任意のページを開きやすくすることです。
わかりやすい例はGoogleの検索結果です。
ふつうGoogleの検索結果は、クエリにもよりますが膨大な件数で返ってきます。
ところが実際に画面に表示されるのは上位10件ほどで、残りは画面下方にあるページ選択を押すことでアクセスできます。
CakePHPでのページネーションとは、データベースに問い合わせて返ってきた結果を
一度に全て表示するのではなく、
上位数件のみを表示させ、残りを他のページへのジャンプ用リンクを使って表示させることをいいます。
今回はごくシンプルに、レコードをid昇順で表示させた上での
ページネーションをやってみます。
コントローラへの記述
$pagenateという配列を定義します。
limitには一度に表示する件数、'sort'には並び替えのキーにしたいフィールド名を入れておきます。
続いてthis->setでビューにページ分けされたレコードを送ります。
ビューへの記述
いつものようにforeach等でレコードを表示させたあと、Paginator->numbersでジャンプ用リンクを作ります。
これだけでもページ番号の数字は表示されますが、
beforeとafterを設定することで数字の前後のボタン(最初や最後にジャンプ、など)を設定できます。
ここではhasPrev(),hasNext()を使って、現在の表示ページよりも
前のページ、もしくは後ろのページがあれば''<<"というリンクを表示させています。
参考
https://book.cakephp.org/3.0/ja/controllers/components/pagination.html