cakephp3 FriendsOfCake/search 使い方

FriendsOfCake/search

■composerを使ってプラグインをインストール
※同階層にcomposer.pharファイルが必要
——————
composer.pharファイルが無い場合は、下記ページの「Command-line installation」に記載してあるPHPのコマンドを実行。
https://getcomposer.org/download/

php -r ・・・
・・・

——————

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

「B.のvendor」配下にfriendsofcake/searchがインストールされる

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

1.コマンド

cd bin/
php cake.php plugin load Search

C.のApplication.phpに下記内容が追加される

public function bootstrap()
{
    $this->addPlugin('Search'); ←これ

2.1.を直に書く

下記、Bake All したファイルを利用。
■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