PHPシェアする1ページあたりに表示されるレコードの件数を制御したいという状況はよくあると思います。今回はページネーションを使用して、取得したレコードをページ分けするやり方を紹介したいと思います。シンプルに1ページあたりの件数と、表示順の設定だけをしていきます。以下のテーブルを用意して、適当にデータを入れてきます。CHARSET=utf8mb4;ページネーションの検索条件定義ページネーションを使用したいコントローラーで、以下のコードを記述します。}}「$paginate」に「limit」と「order」をセットしています。「order」がどのカラムでソートするかを定義しています。「Articlesテーブルのcreatedカラム」の「降順」でソートするというような感じです。「order」の書式は、キーを「ソート対象のカラム」にし、バリューを「asc」もしくは「desc」の配列構造にする必要があります。initialize()にて「Paginator」のコンポーネントを読み込む必要があります。一覧データの取得モデルのfindメソッドを使って一覧のデータを取得します。ここではArticlesテーブルのレコードのうち、削除フラグが「0」の記事を取得してみます。}一覧データの表示view側で取得したデータの一覧をテーブルで表示します。</table></div>もし、ページネーションを使わないままview変数を使用して記事一覧を表示させると、以下のように全ての記事一覧が1ページに表示されてしまいます。そこで、データ取得後に1行追加し、以下のようにします。}上記により、ページ分けされた検索結果が「$articles」に代入されます。ページリンクの表示ビューのテンプレートファイルで、ページリンクを表示したい部分に以下のコードを差し込みます。今回は</table>の後に入れました。</ul></div>PaginationHelperクラスの関数を使用しています。「$this->Paginate->hasPrev()」は現在のページが先頭でない場合に「true」を返します。「$this->Paginate->hasNext()」は現在のページが最終でない場合に「true」を返します。「$this->Paginate->prev()」は前のページへのリンクを生成します。「$this->Paginate->next()」は次のページへのリンクを生成します。「$this->Paginate->numbers()」はページ番号ごとにリンクを生成します。上記のコードとcssを組み合わせるとこんな感じになります。ulタグで使用しているクラス「pagination」はデフォルトでcssに入っているのでコピペしても使用できます。↓現在先頭の1ページ目にいます↓2ページ目に移動しましたif文を使って、先頭ページなら「前へ」リンクを非表示にしています。今回は使用していませんが、以下のようなものも使えます。「$this->Paginate->first()」は先頭ページへのリンクを生成します。「$this->Paginate->last()」は最終ページへのリンクを生成します。こちらのドキュメントを読み込むことで、他にも細かい制御が可能です。3.8PaginatorHelperは、ページ番号や次/前のリンクなどの改ページコントロールを出力するために使用されます。book.cakephp.orgサンプルプログラムこちらに今回作成したサンプルがございます。GitHub.github.comテスト用に作成したテーブルのダンプファイルと、controllerとviewファイルです。okiku飲食業界からIT業界に転身してきて現在2年目です。PHPの経験がメインとなります。これまで自分がPHPを扱ってきた上で、モヤモヤしてきたことをメインに記事にしていきますのでよろしくお願いいたします。スポンサーリンクシェアするフォローするokiku関連記事CakePHPのvalidationDefaultで重複チェックをする方法CakePHP3のvalidationDefaultで重複チェックを行う方法を説明いたします。保存時のbuildRulesではなくvalidationDefaultで行うことで、入力後の確認画面に遷移する前にチェックができるようになります。記事を読むCakePHP3で最低限のログイン画面(Auth認証)を作ってみたCakePHP3でログイン処理を実装しました。今回は余計な設定はできるだけ省いたシンプルなログインフォームを紹介します。これまでログイン時の処理を感覚だけで理解していましたが、処理を追うことで何をしているか理解が深まった気がします。記事を読むCakePHP3でエレメントの使い方CakePHP3でエレメントの使い方を紹介します。ビューのテンプレートファイルで、ある一部分の要素を使いまわしたい時に便利です。記事を読むSmartyのテンプレートファイルの中で、文字列をテンプレートとして読み込む方法SmartyのテンプレートからSmartyの構文が入った文字列をレンダリングするやり方です。Smartyのテンプレートを、ファイルからではなく文字列から読み込ませたかったので公式のドキュメントからやり方を探しました。記事の一覧を動的に表示させ、記事毎に設置させているボタンを押すと、対象の記事の「記事タイトル」を使った確認ダイアログが表示されるようにしたかった。CakePHPで色々処理を書いていた中、JavaScriptを連動させてみました。記事を読む【PHP】文字数を取得する今回は文字数の取得を行います。strlen関数とmb_strlen関数は文字列を取得する点では共通していますが、返すものが異なります。Template」エラーが出てきました。対応するディレクトリに関数名と同じ名前のctpファイルを格納しているはずなのに。調べたところ、それまであまり気にしていなかった命名規則に原因があるらしい、、。記事を読むEC-CUBE3プラグインの雛形の作り方EC-CUBE3.0.13以降で搭載されたプラグインジェネレーターを使って、プラグインの雛形をコンソールコマンドで簡単に生成出来るようになったので、その使い方の紹介です。記事を読むCakePHPで同じカラムに複数のカスタムバリデーションをセットする方法CakePHPのバリデーションの話です。同じカラムに対して複数のカスタムバリデーションを設定したかったのですが、1つしかバリデーションが効かなかったので原因を追求しました。記事を読むEC-CUBE3でテーブルにカラムを追加EC-CUBE3のプラグインでは、基本的に既存テーブルに対してカラムを追加するような拡張は推奨されていません。新規にテーブルを作るよりも、既存テーブルにカラムを追加した方が効率的なこともあるので、そんな時のためにやり方を紹介しています。