我有以下自定义路线(工作正常):
Router::connect('/:city', array('controller' => 'dealers', 'action' => 'index'), array('city' => '[a-z]+'));
通过这条路线,我正在尝试获取分页页面2,3,...:
Router::connect('/:city/:id', array('controller' => 'dealers', 'action' => 'index'),
array(
'pass' => array('city', 'id'),
'city' => '[a-z]+',
'id' => '[0-9]+'
)
);
第一个问题现在是,如果我输入 domain.com/washington/2 ,它不会将ID传递给Pagination,我仍然会获得第1页。
第二个问题是我没有让Pagination Helper编写上述链接。如果我在我的观点中尝试这个:
$this->Paginator->options(array
('url'=> array(
$city[0]['City']['url'],
$this->params['id']
)
)
);
它仍然给了我:
http://domain.com/dealers/index/washington/page:2
我提前道歉,如果这不是一件容易的事,但我是新手,并且无法通过这里的可用问题/答案或文档来解决这个问题。
更新1:
我现在尝试了以下 domain.com/washington/page/2 ,但它只是路由到分页第1页:
Router::connect('/:city/:slug/:id',
array('controller' => 'dealers', 'action' => 'index'),
array(
'pass' => array('city', 'slug', 'id'),
'city' => '[a-z]+',
'slug' => '[a-z]+',
'id' => '[0-9]+'
)
);
在我这样做的行动中:
public function index($slug = null, $id = null) {some code}
在视图中我添加了:
$this->Paginator->options(array('url' => $this->passedArgs));
仍然没有运气,如果有人可以提供帮助,我会非常高兴!
答案 0 :(得分:2)
我终于通过将其添加到AppController(beforeFilter)来获取网址 domain.com/washington/page/2 :
if (isset($this->request->params['page'])) {
$this->request->params['named']['page'] = $this->request->params['page'];
}
并添加此路线:
Router::connect('/:city/page/:page',
array('controller' => 'dealers', 'action' => 'index'),
array(
'pass' => array('city', 'page'),
'city' => '[a-z]+',
'page' => '[0-9]+'
)
);
但是我真的不明白这里发生了什么,如果这是一个很好的方法。如果有人可以简单解释一下,我有兴趣知道。
答案 1 :(得分:0)
请参阅上面的评论:)
另外,您可能想要使用它:
$this->Paginator->options(array('url' => $this->passedArgs));
这实际上会将URL中的参数传递给paginator helper。