我在控制器中设置了一些简单的分页,如下所示:
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/2
,http://mysite.com/things/3
等。
但是当我点击链接时,我的控制器中的Paginator似乎无法识别它在某个页面上,因为我只是显示了第一页的结果。我猜我需要以某种方式将页码传递给$this->paginate()
,但我不知道最好的方法是什么。如果我修改路线,Cake是否有办法自动获取页码?
谢谢!
答案 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