CakePHP分页忽略页码

时间:2013-09-09 22:02:44

标签: php cakephp pagination

我在控制器中设置了一些简单的分页,如下所示:

public function index() {
    $this->set('items', $this->paginate());
}

在我看来,我正在使用Paginator助手输出编号的链接:

echo $this->Paginator->numbers(array(
    'separator' => '',
    'tag' => 'li',
    'currentTag' => 'a',
    'currentClass' => 'active'
));

这一切都运行正常,但是我想为分页链接使用自定义URL。我将此添加到我的routes.php文件中:

Router::connect('/things/:page', array('controller' => 'things', 'action' => 'index'), array('page' => '[0-9]+'));

现在Paginator助手输出的链接是我想要的方式。它们看起来像http://mysite.com/things/2http://mysite.com/things/3等。

但是当我点击链接时,我的控制器中的Paginator似乎无法识别它在某个页面上,因为我只是显示了第一页的结果。我猜我需要以某种方式将页码传递给$this->paginate(),但我不知道最好的方法是什么。如果我修改路线,Cake是否有办法自动获取页码?

谢谢!

1 个答案:

答案 0 :(得分:0)

由于Pagination组件默认需要命名参数'page:1',因此您需要以某种方式在索引中传递相同的变量。

如果您在控制器中打印$ this-> request-> params,您会发现它已丢失。

请参阅该示例,了解如何在路由器中传递命名参数:

Router::connect(
   '/:controller/:action/*',
   array(),
   array(
    'named' => array(
        'wibble',
        'fish' => array('action' => 'index'),
        'fizz' => array('controller' => array('comments', 'other')),
        'buzz' => 'val-[\d]+'
        )
    )
);

有关详细信息,请参阅this section in Cakephp book