[CakePHP3]Cake3で検索プラグイン(friendsofcake/search)を使う

CakePHP

CakePHP3の検索プラグインとして、friendsofcake/searchが良く使われていると思いますが、CakePHP3.6で仕様が変わってしまいました。
CakePHPはこういうことがよくあるので困っちゃいますね。

変更点

こんな感じの書き方に変わりました

model

use Search\Manager;

class ApplesTable extends Table{
    public function initialize(){ //初期化時にまとめてやる場合
        parent::initialize();
        $this->addBehavior("Search.Search");
        $this->searchManager()
            ->value("fruit_id");
    }
    public function searchManager(){  //個別に書く場合
        $searchManager = $this->behaviors()->Search->searchManager();
        $searchManager
            ->value('fruit_id');
        return $searchManager;
    }
}

Controller

class HogesController extends Controller{
    public function initialize(){
        parent::initialize();
        $this->loadComponent("Search.Prg",[
            "actions" => ["index"]
        ]);
    }
    public function index(){
        $filter = $this->request->getQuery();
        $query = $this->Emails->find("search", $filter);
        $apples = $this->paginate($query);
        $this->set(compact("hoges"));
    }
}

モデルでは、以前はsearchConfiguration()を呼ばなくても裏で勝手に読んでくれていたみたいですが、今回から自分で呼ばないとダメ見たいです。
また、filterParams()なくなったようで、Request::getQuery()メソッドからうけとっだデーターをそのままfindメソッドに渡すだけでよくなったようです。

タイトルとURLをコピーしました