У меня есть страница со списком пользователей, где результат можно изменить с помощью выбора пола, города и страны (раскрывающиеся списки), и все работает отлично. Поскольку у нас много пользователей, мне также нужно добавить нумерацию страниц, и здесь начинается "странная" часть (я уверен, что это не странно, но я просто не могу понять, откуда взялась проблема) : когда я выбираю пол, разбиение на страницы работает отлично, и я могу перемещаться между всеми страницами, но если я, например, выбираю город (в дополнение к полу или без него), номера страниц правильные, но я потерял ограничение города когда я перехожу на другую страницу.
Поэтому я попытался понять, что происходит с моими фильтрами, отобразив файл $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()
внутри контроллера. Я до сих пор не понимаю, почему это работает для гендерного фильтра, а не для остальных
С уважением,
Николай.