获取CakePHP 2 Paginator的具体路线

时间:2013-04-14 01:29:50

标签: php cakephp

我有4条路由到同一个控制器/动作。

Router::connect('/noticias/:id/:slug/*', array(
    'controller' => 'posts', 'action' => 'listing', 'admin' => false),
    array(
        'pass' => array('id','slug'),
        'id' => '[0-9]+',
        'slug' => '[a-zA-Z0-9_-]+'
    )
);

Router::connect('/servicos/:id/:slug/*', array(
    'controller' => 'posts', 'action' => 'listing', 'admin' => false),
    array(
        'pass' => array('id','slug'),
        'id' => '[0-9]+',
        'slug' => '[a-zA-Z0-9_-]+'
    )
);

Router::connect('/aplicacoes/:id/:slug/*', array(
    'controller' => 'posts', 'action' => 'listing', 'admin' => false),
    array(
        'pass' => array('id','slug'),
        'id' => '[0-9]+',
        'slug' => '[a-zA-Z0-9_-]+'
    )
);

Router::connect('/produtos/:id/:slug/*', array(
    'controller' => 'posts', 'action' => 'listing', 'admin' => false),
    array(
        'pass' => array('id','slug'),
        'id' => '[0-9]+',
        'slug' => '[a-zA-Z0-9_-]+'
    )
);

但是,当我尝试生成这些不同路由的分页时,CakePHP只为routes.php文件中的第一个(找到的)路由生成。

我如何获得具体路线?或者在Paginator中设置路径手动

WHAT 是最佳解决方案吗?创建4个动作?正则表达式?重定向?


<div class="paging right">
    <?php $this->Paginator->options(array(
        'url'=> array(
            'controller' => 'posts', 
            'action'     => 'listing',
            'id'         => $this->params->pass['0'],
            'slug'       => $this->params->pass['1'],
            'admin'      => false
        )
    )); ?>

    <?php echo $this->Paginator->prev('<' . __(''), array(), null, array('tag' => 'a', 'separator' => '')); ?>

    <?php echo $this->Paginator->numbers(array('separator' => '')); ?>

    <?php echo $this->Paginator->next(__('') . '>', array(), null, array('tag' => 'a', 'separator' => ''));  ?>
</div>  

1 个答案:

答案 0 :(得分:1)

第2个param数组对于所有4条路线都是相同的。那么你如何看待cake在反向路由时区分哪个url字符串?它将始终使用第一个匹配的。选择更好的,逻辑上可区分的路线。