GitHubで’cakephp search’で検索 Starの多い順に並べてCakePHP3でつかそうなものからピックアップしました。で以下を採用。
friendsofcake/search
https://github.com/FriendsOfCake/search
ドキュメントのルートに行ってcomposerでインストール
$ composer require friendsofcake/search
cakeコマンドでプラグイン追加
$ ./bin/cake plugin load Search
いちおう、config/bootstrap.phpの最後あたりを確認して準備OK
Plugin::load('Search');
モデル(Table)
initializeに addBehavior()と、検索条件を追加
public function initialize(array $config)
{
parent::initialize($config);
$this->addBehavior('Search.Search');
$this->searchManager()
->like('name',[
'before' => true,
'after' => true
]);
コントローラー
initializeで読み込みと使うアクション指定(ココではindex)
public function initialize()
{
parent::initialize();
$this->loadComponent('Search.Prg', [
'actions' => ['index']
]);
}
モデルのfind()で ’search’ としてリクエストを渡してあげる。
containとかは普通につなげてOK
public function index()
{
$query = $this->Products
->find('search',['search'=>$this->request->query])
->contain(['Suppliers', 'ProductStatuses', 'Components']);
$this->set('products', $this->paginate($query));
}
ビュー(検索フォーム)
<?php
echo $this->Form->create(null, ['valueSources' => 'query']);
echo $this->Form->input('name');
echo $this->Form->button('検索', ['type' => 'submit']);
echo $this->Form->end();
?>
詳しくは
friendsofcake/search
https://github.com/FriendsOfCake/search