cakephp3 FriendsOfCake/search 使い方

FriendsOfCake/search

■プロジェクトルートディレクトリ(一番上のディレクトリ)でcomposerを使ってプラグインをインストール
※composer.pharが必要
 無い場合はインストール(https://getcomposer.org/download/)

・インストール先:プロジェクトフォルダ/vendor/friendsofcake/search

php composer.phar require friendsofcake/search

■プラグインを読み込む設定
1 or 2

1.コマンド
cd bin/
cake plugin load Search

2.config/bootstrap.phpに直接記載
Plugin::load(‘Search’);

※「1」は結果「2」となる。

■Table class

public function initialize(array $config)
{
	parent::initialize($config);

	/* ここから追加 */
	$this->addBehavior('Search.Search');
	
	$this->searchManager()
		// 完全一致 (任意のフィールド(カラム)名)
		->value('tel')
		// あいまい検索 (任意のフィールド(カラム)名)
		->like('name', [
			'before' => true,
			'after' => true
		])
		// あいまい検索 (複数フィールド(カラム))
		->add('q', 'Search.Like', [
			'before' => true,
			'after' => true,
			'mode' => 'or',
			'comparison' => 'LIKE',
			'wildcardAny' => '*',
			'wildcardOne' => '?',
			// 任意のフィールド(カラム)名
			'field' => ['name', 'address']
		]);
	/* ここまで追加 */
	
	// ※ bakeした場合、下記は記述済
	$this->table('テーブル名(大文字・・・s)');
	$this->displayField('name');
	$this->primaryKey('id');
}

■Controller class

// 任意(ページング設定)
public $paginate = [
	'limit' => 100,
	'order' => [
		'テーブル名(大文字・・・s).id' => 'asc'
	]
];

public function initialize()
{
	parent::initialize();
	$this->loadComponent('Search.Prg', [
		'actions' => ['index']
	]);
}

public function index()
{
	$query = $this->テーブル名(大文字・・・s)->find('search', ['search' => $this->request->query]);
	$this->set('datas', $this->paginate($query));
}

■View

<?php
// debug($datas);
echo $this->Form->create();
echo $this->Form->input('tel');
echo $this->Form->input('name');
echo $this->Form->input('q');
echo $this->Form->button('Filter', ['type' => 'submit']);
echo $this->Html->link('Reset', ['action' => 'index']);
echo $this->Form->end();
?>
PAGE TOP