Cakephp PHP WEB開発

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

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

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$this->paginate = [
'findType' => 'customFinderName',
'id' => $id,
'name' => $name,
'limit' => 50,
'paramType' => 'querystring'
];
$this->set('data', $this->paginate('ModelName'));
$this->paginate = [ 'findType' => 'customFinderName', 'id' => $id, 'name' => $name, 'limit' => 50, 'paramType' => 'querystring' ]; $this->set('data', $this->paginate('ModelName'));
$this->paginate = [
    'findType' => 'customFinderName',
    'id' => $id,
    'name' => $name,
    'limit' => 50,
    'paramType' => 'querystring'
];
$this->set('data', $this->paginate('ModelName'));

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// メソッド内に記述
$customFinderOptions = [
'id' => $id,
'name' => $name,
];
$settings = [
'finder' => [
'customFinderName' => $customFinderOptions,
],
'limit' => 50,
];
$this->set('data', $this->paginate($this->ModelNames, $settings));
// メソッド内に記述 $customFinderOptions = [ 'id' => $id, 'name' => $name, ]; $settings = [ 'finder' => [ 'customFinderName' => $customFinderOptions, ], 'limit' => 50, ]; $this->set('data', $this->paginate($this->ModelNames, $settings));
// メソッド内に記述
$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開発
-

S