cakephp3 FriendsOfCake/search 使い方

FriendsOfCake/search

■composerを使ってプラグインをインストール
※composer.pharが必要
——————
無い場合はインストール(https://getcomposer.org/download/)
下記のコマンドを実行。
「Command-line installation
Run this in your terminal to get the latest Composer version:
コマンド・・・」
——————

/
└─var
    └─www
        └─html
            └─hoge.com
                └─app ←A.ここにcomposerをインストールしておく
                    ├─bin
                    ├─config
                    ├─logs
                    ├─plugins
                    ├─src
                    ├─tests
                    ├─tmp
                    ├─vendor ←B.ここにプラグインがインストールされる
                    └─webroot
php composer.phar require friendsofcake/search

インストール先は「B.vendor」以下になる

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

1.コマンド

cd bin/
php cake.php 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,
	// 'maxLimit' => 200, // defalutで最高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