我正在使用 cakephp 2.3.1,但 Paginator 组件有问题。
我的目标是这样的页面:
example.com/abruzzo
example.com/abruzzo/2
example.com/abruzzo/3
我创建了以下路线:
Router::connect('/:regione/:page', array('controller'=>'regions','action'=>'home'), array('page' =>'[0-9]+'));
Router::connect('/:regione', array('controller' => 'regions', 'action' => 'home'));
(如您所见,第一条路线工作处理页面参数)
现在,为了正确处理页面参数,我在 RegionsController 的beforeFilter中添加了以下行。
public function beforeFilter()
{
$this->request->params['named']['page'] = (isset($this->request->params['page'])) ? $this->request->params['page'] : 1;
}
因为我阅读了 Paginator 组件会直接查看广告 ['named']['page'] 而不是 ['page'] 。
第一个问题:
它是否正确?我真的需要 beforeFilter() 中的这个技巧吗?
然后,我需要使用以下方法显示页面编号:
<?php echo $this->Paginator->numbers(); ?>
这里的问题是在链接上创建的 URL 是错误的。他们指向:
example.com/regions/home/page:2
example.com/regions/home/page:3
etc...
我不需要这样的 URL,我需要:
example.com/abruzzo
example.com/abruzzo/2
example.com/abruzzo/3
第二个问题:
如何强制使用我想要的 url 而不是 controller/action/page:N 格式?
谢谢!