0

假设我有这个带有分页的页面:

本地主机/法国/用户/索引/页面: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 教程进行语言切换:

基于 URL 的语言切换...

通过 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...
4

2 回答 2

0

向我们展示控制器代码、视图代码和一些示例 url。我过去也遇到过类似的问题,但如果您不向我们提供更多信息,没有人可以提供帮助。

于 2010-02-04T13:57:06.187 回答
0
Even i faced the similar problem

**Solution**

I closely checked all my code and after trial and errors i was able to find the solution

First the cause: I was doing a order by 
$this->paginate = array(
            'limit' => 20,
            'order' => array('Test.aws_id' => 'asc'),
            'conditions' => $condition_options
        );

The above code was returning first page result across all pages.

After a while i closely checked everything and the result set.
The resultset was returning me **capital AWS_ID** and i was doing my ordering on aws_id after changing it to caps my code was working

Hope this helps someone
于 2016-09-20T11:46:25.803 回答