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>