本記事では、cakephpのページネーションをカスタマイズする方法を解説いたします。
テンプレートの作成
cakephpのページネーションをカスタマイズするには、
最初に利用するテンプレートを作成します。
テンプレートの保存場所
configディレクトリ
config/original-paginator.php
1 2 3 4 5 6 7 8 |
<?php return [ 'number' => '<span style="border: solid 1px black; padding: 10px; margin: 1px;"> <a href="{{url}}">{{text}}</a></span>', 'current' => '<span style="background-color: black; color: white; border: solid 1px black; padding: 10px; margin: 1px;">{{text}}</span>', ]; ?> |
テンプレート名の項目説明
テンプレート項目名 | 説明 |
---|---|
nextActive | next() によって生成されたリンクの有効な状態 |
nextDisabled | next() の無効な状態 |
prevActive | prev() によって生成されたリンクの有効な状態 |
prevDisabled | prev() の無効な状態 |
counterRange | counter() で format == range の場合のテンプレート |
counterPages | counter() で format == pages の場合のテンプレート |
first | first()によって生成されたリンクに使用されるテンプレート |
last | last() によって生成されたリンクに使用されるテンプレート |
number | numbers() によって生成されたリンクに使用されるテンプレート |
current | 現在のページで使用されているテンプレート |
ellipsis | numbers() によって生成された省略記号に使用されるテンプレート |
sort | 方向のないソートリンクのテンプレート |
sortAsc | 昇順のソートリンクのテンプレート |
sortDesc | 降順のソートリンクのテンプレート |
テンプレート名
Cookbook:https://book.cakephp.org/4/ja/views/helpers/paginator.html#id3
ページ番号リンクの項目説明
ページ番号リンクの並び、表示のカスタマイズをする場合には、下記の項目を変更します。
テンプレート項目名 | 説明 |
---|---|
before | 数字の前に挿入されるコンテンツ |
after | 数字の後に挿入されるコンテンツ |
model | その番号を作る元になるモデル。デフォルトは PaginatorHelper::defaultModel() |
modulus | 現在のページの両側に含める数字の数。 デフォルトは 8。 |
first | 先頭ページへのリンクを生成したい場合、先頭から何ページ分を生成するかを整数で指定します。 デフォルトは false です。文字列を指定すると、その文字列をタイトルの値として先頭ページへのリンクを生成します。 |
ページ番号リンクの作成
Cookbook:https://book.cakephp.org/4/ja/views/helpers/paginator.html#id5
ページカウンターの項目説明
結果セットに対するページカウンターの表示のカスタマイズは、下記の項目を変更します。
テンプレート項目名 | 説明 |
---|---|
{{page}} | 表示された現在のページ |
{{pages}} | 総ページ数 |
{{current}} | 表示されようとしている現在のレコード数 |
{{count}} | 結果セットの中の全レコード数 |
{{start}} | 表示されようとしている先頭のレコード数 |
{{end}} | 表示されようとしている最終のレコード数 |
{{model}} | モデル名を複数系にして読みやすい書式にしたもの。 あなたのモデルが 'RecipePage' であれば、 {{model}} は 'recipe pages' になります。 |
ページカウンターの生成
Cookbook:https://book.cakephp.org/4/ja/views/helpers/paginator.html#id9
テンプレートの読込
上記で作成したテンプレートを、読み込むように設定します。
※~\src\View\AppView.php
1 2 3 4 5 6 7 8 9 10 |
class AppView extends View { public function initialize() { $this->loadHelper( 'Paginator', [ 'templates' => 'original-paginator' ]); } } |
PaginatorHelper テンプレート
Cookbook:https://book.cakephp.org/4/ja/views/helpers/paginator.html#paginatorhelper