У меня есть страница со списком пользователей, где результат может быть изменен с помощью выбора пола, города и страны (выпадающие списки), и он работает отлично.Так как у нас много пользователей, мне нужно также поставить нумерацию страниц, и здесь появляется "странная" часть (я уверен, что это не странно, но я просто не могу понять, откуда возникла проблема):когда я выбираю пол, нумерация страниц работает отлично, и я могу перемещаться между всеми страницами, но если я выбираю, например, город (в дополнение или не пола), номера нумерации страниц правильные, но я потерял ограничение города, когдаЯ перехожу на другую страницу.
Поэтому я попытался понять, что происходит с моими фильтрами, отобразив $this->data
.И он говорит точно так же, как и раньше: прекрасно работает с полом ($this->data['users']['gender']
просматривайте все страницы нумерации страниц), но другие параметры просто теряются, когда я пытаюсь уйти.Дело в том, что нет никакой разницы между фильтром gender
и другими, ни на стороне контроллера, ни в представлении (оба являются входами выбора).
С более технической стороны, вотнемного моего кода:
//In the controller function
if (!empty($this->data['users']['gender'])) {
$conditions['gender'] = $this->data['users']['gender'];
}
if (!empty($this->data['users']['country_id'])) {
$conditions['city_id'] =
$this->User->City->find(
'list',
array(
'conditions' => array(
'country_id' => $this->data['users']['country_id']),
'fields' => 'City.id'));
}
if (!empty($this->data['users']['city_id'])) {
if($this->data['users']['city_id'] == 'NULL') {
$conditions['city_id IS ?'] = NULL;
} else {
$conditions['city_id'] = $this->data['users']['city_id'];
}
}
//debug($this->data);
$options = array(
'limit' => 20,
'order' => 'User.lastname ASC',
'conditions' => $conditions);
$this->paginate = $options;
$users = $this->paginate('User');
Как видите, я использую функцию paginate()
в контроллере.Я до сих пор не понимаю, почему он работает для гендерного фильтра, а не для остальных
Ура,Николя.