0

我的应用程序中有以下两条路由用于分页:

Router::connect('/news', array(
    'controller' => 'posts', 'action' => 'index','page' => 1
));

Router::connect('/news/page/:page*', 
    array('controller' => 'posts', 'action' => 'index'), 
    array('named' => array('page' => '[\d]+'))
);

想法是第 1/news页是第 2 页是/news/page/2

它只是显示第一页......任何想法是什么问题?谢谢

4

2 回答 2

1

首先,如果您的操作接受普通参数,则不需要使用命名参数:

public function index($page = 1) {} // defaults to page 1

开箱即用,这将使以下 URL 工作:

/news ---------> NewsController::index(null); // defaults to page 1
/news/index/1 -> NewsController::index(1);
/news/index/2 -> NewsController::index(2);
etc.

现在只需添加一个路由来映射/news/page/*index动作而不是page动作:

Router::connect('/news/page/*', array('controller' => 'news', 'action' => 'index'));

结果:

/news/page/2 -> NewsController::index(2);
于 2012-10-05T16:49:59.240 回答
0

CakePHP 有一个内置的 PaginationComponent 用于获取数据,还有一个 PaginationHelper 用于视图中的分页链接。

http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html http://book.cakephp.org/2.0/en/core-libraries/helpers/paginator.html#PaginatorHelper

您无需为分页设置路线。

好的,如果您想要自定义路由,请将其更改为:

    Router::connect('/events', array('controller' => 'events', 'action' => 'index','page' => 1));
    Router::connect('/events/page/:page', array('controller' => 'events', 'action' => 'index'), array('page' => '[\d]+'));


    //find your data in params
    $this->request->params['page'];
于 2012-10-05T13:43:44.813 回答