CakePHP4.1を使っていて、公式サイトのページネーションの記述の少なさにがっくりしているあなた。
私もその一人です(笑)
公式サイトよりも多くの情報を目指すべく、あーでもないこーでもないと格闘しております。
CakePHPのページネーションは、classなどのCSSをあてることができます。
そのためにテンプレート(templates)を作ることができます。
まず、config/フォルダ以下に適当な名前で例えば「paginator-temp.php」というファイルを作成して下記を記述します。
<?php
return [
'number' => '<li class="page-item"><a class="page-link" href="{{url}}">{{text}}</a></li>',
'current' => '<li class="page-item active"><a class="page-link" href="{{url}}">{{text}}</a></li>',
'first' => '<li class="page-item"><a class="page-link" href="{{url}}" aria-label="Previous">
<span aria-hidden="true">{{text}}</span><span class="sr-only">Previous</span></a></li>',
'last' => '<li class="page-item"><a class="page-link" href="{{url}}" aria-label="Next">
<span aria-hidden="true">{{text}}</span><span class="sr-only">Next</span></a></li>',
'nextActive' => '<li class="page-item"><a class="page-link" href="{{url}}" aria-label="Next">
<span aria-hidden="true">{{text}}</span><span class="sr-only">Next</span></a></li>',
'prevActive' => '<li class="page-item"><a class="page-link" href="{{url}}" aria-label="Next">
<span aria-hidden="true">{{text}}</span><span class="sr-only">Next</span></a></li>',
'nextDisabled' => '<li class="page-item"><a class="page-link" href="{{url}}" aria-label="Next">
<span aria-hidden="true">{{text}}</span><span class="sr-only">Next</span></a></li>',
'prevDisabled' => '<li class="page-item"><a class="page-link" href="{{url}}" aria-label="Next">
<span aria-hidden="true">{{text}}</span><span class="sr-only">Next</span></a></li>',
];
これはよく見ていただければわかりますが、'number'というナンバリングに上記のCSSがあたります。
{{url}}や{{text}}がnumberから出力されるものが入ります。
ポイントは「current」に「active」が入っているところです!
その他のテンプレートの項目はこちらを参照してください。
そして、/src/View/AppView.php
に
namespace App\View;
use Cake\View\View;
/**
* Application View
*
* Your application's default view class
*
* @link https://book.cakephp.org/4/en/views.html#the-app-view
*/
class AppView extends View
{
/**
* Initialization hook method.
*
* Use this method to add common initialization code like loading helpers.
*
* e.g. `$this->loadHelper('Html');`
*
* @return void
*/
public function initialize(): void
{
$this->loadHelper('Paginator', ['templates' => 'paginator-temp']);//追加
}
}
これを追加します。
ちなみに、hogehoge.php(viewファイル)はこんな感じ
<?= $this->Paginator->first('<< ' . __('最初へ')) ?>
<?= $this->Paginator->prev('< ' . __('一つ前')) ?>
<?= $this->Paginator->numbers() ?>
<?= $this->Paginator->next(__('次へ') . ' >') ?>
<?= $this->Paginator->last(__('最後へ') . ' >>') ?>
でこんな感じになります。

注意点その1
独自のテーマ(plugin/MyTheme/)などでテーマを使われている方でも上記のAppView.phpが適用されます。←最初はplugin/MyTheme/src/にAppView.phpを
作ったりしてましたが、不要でした。これだけで3時間消費。。
注意点その2
「最初へ戻る」のfirstのタグは、次のページ「2」などに移らないと、そもそもCakephpから出力されません!これで1時間。。
私からは以上です。