cakePHPは便利なことにページネーションのソースを出力するpaginatorヘルパーが備わっています。デフォルトではlistタグで出力してくれますが、テンプレートを当てはめることでカスタムすることができます。
予めコントローラーとテンプレートファイルで準備する場合は以下の手順を行います。
CSSフレームワークを使用してサイト作りする場合、そのフレームワークの指定するクラスなどがあるはずなので、それに合わせたテンプレートファイルを作ると便利です。
configフォルダに「paginator-templates.php」テンプレート用のファイルを準備
paginator-templates.phpの中身
return [
'nextActive' => '<span class="next page-link"><a rel="next" href="{{url}}">{{text}}</a></span>',
'nextDisabled' => '<span class="disabled page-link">{{text}}</span>',
'prevActive' => '<span class="prev page-link"><a rel="prev" href="{{url}}">{{text}}</a></span>',
'prevDisabled' => '<span class="disabled page-link">{{text}}</span>',
'number' => '<span class="page-link"><a href="{{url}}">{{text}}</a></span>',
'current' => '<span class="current page-link">{{text}}</span>',
'first' => '<span class="first page-link">{{text}}</span>',
'last' => '<span class="last page-link">{{text}}</span>',
];
利用するコントローラにヘルパーの読み込み追記
public $helpers = [
'Paginator' => ['templates' => 'paginator-templates']
];
ビューでページネーション出力場所に追記
<div class="paginator">
<div class="pager">
<?= $this->Paginator->first('<< ' . __('first')) ?>
<?= $this->Paginator->prev('< ' . __('previous')) ?>
<?= $this->Paginator->numbers() ?>
<?= $this->Paginator->next(__('next') . ' >') ?>
<?= $this->Paginator->last(__('last') . ' >>') ?>
</div>
<p><?= $this->Paginator->counter(['format' => __('Page {{page}} of {{pages}}, showing {{current}} record(s) out of {{count}} total')]) ?></p>
</div>