Я использую плагин поиска cakeDC в своем приложении. can; t похоже на то, почему результаты пустые, если я не передаю значение в поле имени пользователя, которое я ищу, но у вас есть фильтр типа учетной записи, установленный либо администратором, либо пользователем. Для записи, когда фильтр установлен для всех с помощью пустое поле пользователя выводит всех пользователей в системе, пытаясь реплицировать поведение поисков, у которых фильтр типа учетной записи установлен на все с пустым полем поиска имени пользователя, для того, чтобы фильтр типа учетной записи устанавливался либо на 2 пользовательских типа.фильтрация cakedc результаты поиска
соответствующий код, если это необходимо:
контроллер
public $components = array('Paginator', 'Session','Search.Prg');
public $presetVars = array(
array('field' => 'username', 'type' => 'value'),
array('field' => 'account_type', 'type' => 'value'));
public function admin_index() {
$this->Prg->commonProcess();
$this->paginate = array(
'conditions' => $this->User->parseCriteria($this->passedArgs));
$this->set('users', $this->Paginator->paginate(),'session',$this->Session);
модель
public $actsAs = array('Search.Searchable');
public $filterArgs = array( array('name' => 'username', 'type' => 'query', 'method' => 'filterName'),
array('name' => 'account_type', 'type' => 'value'),
);
public function filterName($data, $field = null) {
$nameField = '%' . $data['username'] . '%';
return array(
'OR' => array(
$this->alias . '.username LIKE' => $nameField,
));
}
вид формы поиска
<div><?php echo $this->Form->create('User', array(
'novalidate' =>true,'url' => array_merge(array('action' => 'index','admin'=> true), $this->params['pass'])
)); ?>
<?php
$account_types = array(
'' => __('All', true),
0 => __('admin', true),
1 => __('user', true),);
echo $this->Form->input('username', array('div' => false, 'empty' => true)); // empty creates blank option.
echo $this->Form->input('account_type', array('label' => 'account_type', 'options' => $account_types));
echo $this->Form->submit(__('Search', true), array('div' => false));
echo $this->Form->end();
?></div>
«OR» в ваших возвращенных условиях не имеет большого смысла, так как есть только 1 проверка (имя пользователя LIKE). – Oldskool