WEmoBコンテンツへスキップWEmoB個人的なメモCakePHP3のPaginateに表示可能ページ数を設定するCakePHP3のPaginateで、表示できる最大ページ数を設定する方法をメモしておきます。?CakePHP3のPaginateは、LIMITとOFFSETを使いページネーションを実現しています。DBのレコード数が多くなり、OFFSETの値が大きくなればなるほど、それだけサーバに負荷がかかってしまいます。INDEXを作っていれば、そんなに遅くならない、らしい。X<コピーPaginate関連のファイルは2種あります。vendor/cakephp/cakephp/src/Controller/Component/PaginatorComponent.phpvendor/cakephp/cakephp/src/View/Helper/PaginatorHelper.phpこのファイルをそれぞれ、src/Controller/Component/PaginatorComponent.phpsrc/View/Helper/PaginatorHelper.php上記パスにコピーしてきます。PaginatorComponent.phpの書き換えまずはPaginatorComponent.phpを編集していきます。エディタでsrc/Controller/Component/PaginatorComponent.phpを開いてください。...?>まずはnamespaceをCakeからAppへと書き換えます。add];$_defaultConfigに新しくmaxPageを追加します。この値が表示可能なページ数になります。今回は初期値を100ページに設定します。...}paginateメソッドの$pageCountを先ほど設定したmaxPageで上書きします。以上がPaginatorComponent.phpの変更箇所です。PaginatorHelper.phpの書き換え次にPaginatorHelper.phpを書き換えていきます。エディタでsrc/View/Helper/PaginatorHelper.phpを開いてください。PaginatorComponent.phpと同様に、PaginatorHelper.phpもnamespaceをAppに書き換えます。App\View\Helper;//...?>次にhasNextメソッドを書き換えます。}}$this->paramsには現在のページネーションの状態が格納されているようなので、それを利用します。$params[‘page’]は現在のページ数、$params[‘pageCount’]は先ほど設定した、表示可能ページ数が格納されています。表示可能ページ数より現在のページ数が小さくなければ、0を返してページネーションのnextリンクを無効にします。変更を加えたsrcの方が読み込まれます。100;上記のような感じで、paginateのmaxPageに値を入れていただければ変更可能です。