CakePHP的2.x的自定义路由分页(CakePHP 2.x Custom Route Pagin

2019-09-27 09:11发布

我有以下的自定义路由(工作正常):

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传递给分页和我仍然得到第1页。

第二个问题是,我没有得到分页助手写上面的链接。 如果我尝试这在我的观点:

$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));

仍然没有运气,我会非常非常高兴,如果有人可以帮帮忙!

Answer 1:

我终于得到了URL domain.com/washington/page/2加入这AppController的(beforeFilter)工作:

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]+'
        )
);

但是我真的不知道这里发生了什么,如果这是这样做的一个很好的方式。 如果有人能简单介绍一下,我很想知道。



Answer 2:

见上面我的意见:)

此外,你可能会想使用这样的:

$this->Paginator->options(array('url' => $this->passedArgs));

这将主要从URL到分页程序助手传递参数。



文章来源: CakePHP 2.x Custom Route Pagination