我有一个用户列表页面,其中可以使用性别,城市和国家/地区选择(下拉菜单)修改结果,并且它的工作非常好。由于我们有很多用户,我也需要加入一个分页,这里有“怪异的”部分(我确定这并不奇怪,但我无法弄清楚问题的来源) :当我选择性别时,分页效果很好,我可以在所有页面之间导航,但是如果我选择一个城市(除了性别之外),分页编号是正确的但是我失去了城市限制当我搬到另一页时。
所以我尝试通过显示$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()
函数。我仍然不明白为什么它适用于性别过滤器而不是其他
干杯,
尼古拉斯。
答案 0 :(得分:1)
在帮助程序中,您的问题不在控制器中。当你第一次传递变量时,它正在工作,因为有post变量,但是除非你将它们传递给分页助手,否则分页不会处理这些变量。
阅读this article,我认为最好通过_GET传递性别和城市。