0

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

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等等。

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

谢谢!

4

1 回答 1

0

由于默认情况下分页组件期望命名参数'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]+'
        )
    )
);

有关更多信息,请参阅Cakephp 书中的此部分

于 2013-09-09T23:40:24.317 回答