Phalcon 5.xにバージョンアップした際に以下のエラーが発生
Call to undefined method Phalcon\Paginator\Adapter\Model::getPaginate() #0 [internal function]: App\Controllers\RecipeController->searchAction() #1 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->callActionMethod() #2 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->dispatch() #3 {pathto}/public/index.php(30): Phalcon\Mvc\Application->handle() #4 {main}
getPaginate()エラーの対応方法
Phalcon 4.xにアップグレードされたときにfunction名が変わったようです。
https://docs.phalcon.io/4.0/ja-jp/upgrade#paginator
getPaginate()からpaginate()に変更
call_user_func()エラー発生
続いて以下のエラーが発生
call_user_func(): Argument #1 ($callback) must be a valid callback, first array member is not a valid class name or object #0 [internal function]: call_user_func() #1 {pathto}/controllers/RecipeController.php(65): Phalcon\Paginator\Adapter\Model->paginate() #2 [internal function]: App\Controllers\RecipeController->searchAction() #3 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->callActionMethod() #4 [internal function]: Phalcon\Dispatcher\AbstractDispatcher->dispatch() #5 {pathto}/public/index.php(30): Phalcon\Mvc\Application->handle() #6 {main}
これは、new Phalcon\Paginator\Adapter\Model()の時に渡すパラメータが間違っているため。
phalcon 5.xの使い方に合わせて以下の3つのどれかに修正する必要があります。
- Phalcon\Paginator\Adapter\Model
- Phalcon\Paginator\Adapter\NativeArray
- Phalcon\Paginator\Adapter\QueryBuilder
注意点として、Phalcon\Paginator\Adapter\Modelは多数のレコードのページネーションに使わないでとなっているので、DBからデータを取得してページネーションを使うならPhalcon\Paginator\Adapter\QueryBuilderにしとくのが良さげです。