CakePHP 2.3 Search Pluginで検索処理 その1設置方法
2017/03/12
Search Pluginで検索処理 設置方法
プラグイン設置の参考サイト
CakePHP 2.0系の Search Pluginで検索処理を作ります。
参考にしたのは下記のサイト。文面はふざけている部分もありますが、内容は至ってしっかりしたもので、非常に参考になります。
また、ページャーの処理やソート機能なども Bakeするのではなく、それぞれ解説をしながら作っていきますので非常に勉強になります。
http://torhamzedd.halteria.com/2012/01/cakephp20search-plugin22.html
上記のサイトを読みながら、プラグインをダウンロードして、所定の場所にインストールしてください。私の場合は、ダウンロードしたファイルは、最新版の 2.3でした。
Search Plugin設置の際の注意ポイント
ここで注意してほしいのは、Pluginを設置したら「/app/Config/bootstrap.php」にそのことを記述する必要があるということです。(上記のサイトには書かれていません。)
「/app/Config/bootstrap.php」の 65行目あたりから Pluginの設定についての記述がありますので、そのあたりに下記のコードを追加しましょう。
————–(/app/Config/bootstrap.php)
CakePlugin::load(array('Search'));
————–
もしくは、70行目あたりにある下記のものをコメントの外に出して、有効にする方法でも OKです。こちらは、Pluginフォルダにあるものはすべて有効にするという記述の方法ですので、すでに有効にしてある場合もあるでしょう。その場合は、上記の記述を書かなくても問題ありません。両方書いていても問題ありません。
————–(/app/Config/bootstrap.php)
CakePlugin::loadAll(); // Loads all plugins at once
————–
[amazonjs asin=”4774153249″ locale=”JP” title=”CakePHP2 実践入門 (WEB+DB PRESS plus)”]
Search Plugin設置のサンプルコード
続いて、テーブルを作りましょう。
こちらも上記サイトにあるものをそのまま使いました。また、データもそのまま入れました。
さらに続けて、Model、Controller、Viewを作ります。
Viewは、上記のサイトにあるものをそのままで問題ありませんが、Model、Controllerは、PHPのファイルですのでファイルの先頭に「<?php」を記述するのを忘れないようにしておきましょう。
そして、一度表示させて、検索フォームを追加するあたりまでは特に問題ないかと思います。
ページャーの設定などは、bakeで出てくるものをそのまま使うこともできますので、bakeで作ったところに検索処理を追加する場合などは、ページャーの一覧を表示する「app/View/Elements/pager.ctp」の設定は不要となるでしょう。
また、「UserController.php」は、最終的には下記のようになります。
————–(/app/Controller/UserController.php)
' - ',
'after'=>' - ',
'modulus'=> 10,
'separator'=> ' ',
'class'=>'pagenumbers'
);
$this->set('pager_numbers', $pager_numbers);
}
public function index()
{
$this->paginate = array(
'limit' => 3
);
$this->set('users', $this->paginate('User'));
}
}
————–
ここで、その 1は終了。
ここまでは問題ないでしょうか?
そして、ここからはその 2が始まります。
http://torhamzedd.halteria.com/2012/01/cakephp20search-plugin2.html
paginatorの sortの説明や、その機能を使って並び替えをする処理も特に問題ないと思います。
そして、続けて「Searchプラグインの準備」とありますが、これは問題ないでしょう。
すでに最初の方で書きましたが、「/app/Config/bootstrap.php」にプラグインを読み込む設定を記述するという内容ですが、最初のタイミングで記述していないと、おそらく最初の表示確認でエラーが出てここまで進めていないはずですから。
続けて、Model、Controllerの設定を行いますが、最終的には以下のようになります。
————–(/app/Model/User.php)
'id', 'type' => 'value', 'field' => 'User.id'),
array('name' => 'username', 'type' => 'like', 'field' => 'User.username'),
array('name' => 'nickname', 'type' => 'like', 'field' => 'Profile.nickname'),
);
// 検索対象のフィールド設定
public $presetVars = array(
array('field' => 'id', 'type' => 'value'),
array('field' => 'username', 'type' => 'value'),
array('field' => 'nickname', 'type' => 'value'),
);
// アソシエーション
public $hasOne = array(
'Profile' => array(
'className' => 'Profile',
'foreignKey' => 'user_id',
'conditions' => null,
'fields' => null,
'dependent' => true,
),
);
}
————–
————–(/app/Controller/UsersController.php)
presetVars = $this->User->presetVars;
// ページャ設定
$pager_numbers = array(
'before' => ' - ',
'after'=>' - ',
'modulus'=> 10,
'separator'=> ' ',
'class'=>'pagenumbers'
);
$this->set('pager_numbers', $pager_numbers);
}
public function index() {
// 検索条件設定
$this->Prg->commonProcess();
// 検索条件取得
$conditions = $this->User->parseCriteria($this->passedArgs);
$this->paginate = array(
'conditions' => $conditions,
'limit' => 3,
);
$this->set('users', $this->paginate('User'));
}
}
————–
【CakePHP 2.3 Search Plugin検索処理 目次】
CakePHP 2.3 Search Pluginで検索処理 その1設置方法
CakePHP 2.3 Search Pluginで検索処理 その2表示件数を動的に変える方法
CakePHP 2.3 Search Pluginで検索処理 その3入力エリア一つで複数の項目を同時に検索する方法
CakePHP 2.3 Search Pluginで検索処理 その4前方一致検索、後方一致検索、不等号による検索、between句による範囲検索
CakePHP 2.3 Search Pluginで検索処理 その5入力項目に複数項目入力した場合の AND検索、OR検索
CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能
CakePHP 2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP4のCakeDC/Usersのログイン時のリダイレクトとユーザ権限管理の設定解説
CakeDC謹製UsersプラグインのCakePHP4版の紹介。ログイン認証後にリダイレクトする先の設定方法についての解説と実運用するために必要なコツを解説。便利な仕組みも仕様の理解があって初めてうまく使いこなせる。
-
-
CakePHP3の検索プラグイン「friendsofcake/search」の設置方法・CakePHP3.6対応
CakePHP3で検索を担うプラグイン「friendsofcake/search」の紹介。基本的な設置方法の紹介のほか、処理の記述方法のバリエーション、エラーの解説など。CakeDC/searchより導入は簡単!
-
-
CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法
CakePHP3でテーブルのアソシエーションしたデータの取得をコントローラー側でINNERかLEFTを指定する方法を解説。TableファイルにINNERで指定していてもController側で変更ができる。
-
-
CakePHP2、CakePHP3、CakePHP4、CakePHP5のバージョンを調べる 2つの方法
CakePHPのバージョンの調べ方2点を紹介。CakePHP3~CakePHP5は共通だが CakePHP2はフォルダ構成が異なるためコマンドのパスもオプションも異なる。
-
-
CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」
CakePHPで PDFを編集、出力するには「mpdf」「TCPDF」「FPDF」といったプラグインがあり、使い勝手を比較検討しました。TCPDFが一番良さそうでした。
-
-
CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合の詳細ページの注意点
ID以外のカラムでアソシエーション(連携)させて詳細ページを表示させる際の考え方と注意点をサンプルソースを用いて解説しています。
-
-
CakePHP3のインストールでURL rewriting……のエラーが!その解決方法解説
CakePHP3をインストールしたら URL rewriting is not properly configured.のエラーが。原因は.htaccessが有効になっていないこと。httpd.confに設定を追加すればOK。
-
-
CakePHP2の検索Plugin CakeDC/Searchで重複を省くgroup by(distinct)の実装方法
CakePHP2の検索プラグイン「CakeDC/Search」で、重複レコードを省くgroup by、distinctを使う方法についての解説。設定する場所はpaginatorの条件とするので、find()関数と同じ。
-
-
CakePHP4、CakePHP5系の認証処理でログインの有無の確認、ユーザ情報の取得の方法
CakePHP4系、5系のログイン認証の可否のチェック、および、ログインユーザの情報を取得する方法のまとめ。複数の方法があるが手続きが微妙に異なるためまとめてみた。
-
-
CakePHP3のUpload Plugin 3.0をバリデーションなど実運用向けのカスタマイズ方法解説・その2
CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその2でバリデーションなどの実用的なカスタマイズ方法を解説。