Cakephp PHP WEB開発

【Cakephp2→4】コントローラ編: paginateにカスタムファインダー

※本サイトはPR表記を含みます。

Cake2からCake4の移行作業のコントローラー内メソッドで、$this->paginate() を使った移行例です。

Cake2: paginate() でカスタムファインダーを指定するパターン例

$this->paginate = [
    'findType' => 'customFinderName',
    'id' => $id,
    'name' => $name,
    'limit' => 50,
    'paramType' => 'querystring'
];
$this->set('data', $this->paginate('ModelName'));

Cake2では $this->paginate に配列として findType キーを渡すようになっています。

Cake4: 上記の例を記述してみる

// メソッド内に記述
$customFinderOptions = [
    'id' => $id,
    'name' => $name,
];

$settings = [
    'finder' => [
        'customFinderName' => $customFinderOptions,
    ],
    'limit' => 50,
];
$this->set('data', $this->paginate($this->ModelNames, $settings));

書き方は色々ありますが、Cake4では finderキーとしてカスタムファインダーを記述する箇所に注目です。あと、オプション引数として、$customFinderOptions に渡したい引数を定義すれば読み手に伝わりやすいと思います。

モデルのカスタムファインダーの移行はどうすんの?についてはコチラをどうぞ。

 

■ Cakephp4: ページネーション: 高度な使用方法
https://book.cakephp.org/4/ja/controllers/components/pagination.html#id3

-Cakephp, PHP, WEB開発
-