问题
I have a the following custom route (which works fine):
Router::connect('/:city', array('controller' => 'dealers', 'action' => 'index'), array('city' => '[a-z]+'));
With this route, I am trying to get paginated pages 2, 3, …:
Router::connect('/:city/:id', array('controller' => 'dealers', 'action' => 'index'),
array(
'pass' => array('city', 'id'),
'city' => '[a-z]+',
'id' => '[0-9]+'
)
);
The first problem now is, that if I enter domain.com/washington/2 it doesn't pass the id to Pagination and I still get page 1.
The second problem is that I do not get the Pagination Helper to write the above link. If I try this in my view:
$this->Paginator->options(array
('url'=> array(
$city[0]['City']['url'],
$this->params['id']
)
)
);
It still gives me:
http://domain.com/dealers/index/washington/page:2
I apologize in advance if this is a no brainer, but I am new to this and couldn't figure it out with the available questions/answers here, or the docs.
UPDATE 1:
I now tried the following for domain.com/washington/page/2 , but it just routes to pagination page 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]+'
)
);
In the action I am doing this:
public function index($slug = null, $id = null) {some code}
In the view I added:
$this->Paginator->options(array('url' => $this->passedArgs));
Still no luck, I'd be very very glad if someone could help out!
回答1:
I finally got the url domain.com/washington/page/2 to work by adding this to AppController (beforeFilter):
if (isset($this->request->params['page'])) {
$this->request->params['named']['page'] = $this->request->params['page'];
}
And by adding this route:
Router::connect('/:city/page/:page',
array('controller' => 'dealers', 'action' => 'index'),
array(
'pass' => array('city', 'page'),
'city' => '[a-z]+',
'page' => '[0-9]+'
)
);
However I do not really understand what happens here, and if this is a good way of doing it. If someone could briefly explain, I'd be interested to know.
回答2:
See my comment above :)
Also, you may be wanting to use this:
$this->Paginator->options(array('url' => $this->passedArgs));
This will essentially pass the arguments from the URL to the paginator helper.
来源:https://stackoverflow.com/questions/12917784/cakephp-2-x-custom-route-pagination