CakePHP2.6.4に【CakeDC search-master】プラグインを使って【checkbox】での検索ができない。
■
MySQLデータベース内に以下のテーブルを作成。
create table users(
id int not null auto_increment primary key,
name varchar(250),
group_id varchar(20));
create table groups(
id int not null auto_increment primary key,
name varchar(250));
■
サンプルとして、30レコードほど入力済み
■
Search Pluginを設定済み
■
app/Model/User.php
<?php
class User extends AppModel {
public $actsAs = array('Search.Searchable');
public $belongsTo = array(
'Group' => array(
'className' => 'Group',
'foreignKey' => 'group_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
public $filterArgs = array(
'name' => array('type' => 'like', 'field' =>
array('User.name','User.group_id')));
}
■
app/Model/Group.php
<?php
App::uses('AppModel', 'Model');
class Group extends AppModel {
public $hasMany = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'group_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
);
}
■
app/Controller/UsersController.php
<?php
class UsersController extends AppController {
public $components = array('Search.Prg');
public $paginate = array();
public function index() {
$this->Prg->commonProcess();
$this->paginate = array(
'limit' => 5
);
$this->paginate['conditions'] = $this->User->parseCriteria($this->passedArgs);
$userList = $this->paginate();
$this->set(compact('userList'));
$groups = $this->User->Group->find('list');
$this->set(compact( 'groups'));
}
}
■
app/View/Users/index.ctp
<div class="section form_search">
<?php echo $this->Form->create('User',array(
'novalidate' => true,
'url' => array_merge(array('action' => 'index'),
$this->params['pass'])));
?>
<?php echo $this->Form->input('name',array('placeholder' => '名前を入力してください','lable' => false)); ?>
<?php echo $this->Form->input('group_id', array(
'type' => 'select',
'multiple' => 'checkbox',
'options' => $groups,
));
?>
<?php echo $this->Form->submit('検索'); ?>
<?php echo $this->Form->end(); ?>
<div class="section">
<h2>名前 or グループ名一覧</h2>
<table>
<tr>
<th><?php echo $this->Paginator->sort('id','ID'); ?></th>
<th><?php echo $this->Paginator->sort('name','名前'); ?></th>
<th><?php echo $this->Paginator->sort('group_id','グループ'); ?></th>
</tr>
<?php foreach($userList as $user): ?>
<tr>
<td><?php echo h($user['User']['id']); ?></td>
<td><?php echo h($user['User']['name']); ?></td>
<td><?php echo h($user['Group']['name']); ?></td>
</tr>
<?php endforeach; ?>
</table>
</div>
<div class="paginateLinks">
<?php echo $this->Paginator->prev(); ?>
<?php echo $this->Paginator->numbers(); ?>
<?php echo $this->Paginator->next(); ?>
</div>
以上で、全てです。
ユーザーの名前を入力しての検索は、できるのですが、チェックボックス
にチェックを入れて検索ができません。
どうすれば、チェックボックスでの検索ができるのでしょうか?
それと、名前とチェックボックスのAND検索。
名前とチェックボックスのOR検索もどうすれば良いか
いろいろやってみたのですが、CakePHP初心者には、
いつまでたっても分かりません。
どうか、よろしくおお願いします。