假设我有这个带有分页的页面:
本地主机/法国/用户/索引/页面:1
根据我在控制器中定义分页变量的方式,我看到了第 1 页的正确结果。但是当我单击下一个按钮时,url 变为 page:2 但结果没有改变,与 page:1 相同,page:3 相同,page:4 等等......
如果我首先对列进行排序,比如说用户名,那么我可以毫无问题地使用上一个/下一个链接,每个页面上的数据都会发生变化。
我能想到的唯一可能导致我出现问题的是我在我的网址中使用了语言参数,但我不知道如何解决这个问题......
我目前正在使用 Cake 1.2.5。我还尝试了 1.3 beta,结果相同。
好的,这是我的用户控制器代码:
var $paginate = array('limit'=>'5');
function index() {
$this->User->recursive = 0;
$this->set('users', $this->paginate());
}
我正在使用 teknoid 教程进行语言切换:
通过 app_helper.php 添加的语言参数
function url($url = null, $full = false) {
if(!isset($url['language']) && isset($this->params['language'])) {
$url['language'] = $this->params['language'];
}
return parent::url($url, $full);
}
并使用 app_controller.php 中的方法完成语言切换:
function _setLanguage() {
if ($this->Cookie->read('lang') && !$this->Session->check('Config.language')) {
$this->Session->write('Config.language', $this->Cookie->read('lang'));
}
else if (isset($this->params['language']) && ($this->params['language']
!= $this->Session->read('Config.language'))) {
$this->Session->write('Config.language', $this->params['language']);
$this->Cookie->write('lang', $this->params['language'], null, '20 days');
}
}
解决方案:
在设置 yahoo boss 站点并注意到分页工作完美无缺后,我更仔细地查看了我的代码,发现问题出在我的 routes.php 中。
我有这个:
Router::connect('/news', array('controller'=>'news', 'action'=>'index'));
Router::connect('/:language/news', array('controller'=>'news', 'action'=>'index'), array('language'=>'[a-z]{2}'));
我这样修改它以获取所有参数:
Router::connect('/news/*', etc...
Router::connect('/:language/news/*', etc...