【问题标题】:Get specific route in CakePHP 2 Paginator在 CakePHP 2 Paginator 中获取特定路由
【发布时间】:2013-04-14 01:29:50
【问题描述】:

我有 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 中手动设置路线?

什么是最好的解决方案?创建 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>  

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    所有 4 条路由的第二个参数数组都是相同的。那么你期望 cake 在反向路由时如何区分生成哪个 url 字符串呢?它将始终使用第一个匹配的。选择更好的、逻辑上可区分的路线。

    【讨论】:

    • 是的,我知道那个 ADmad。 CakePHP 使用找到的第一个路由。我的问题是:什么是最好的解决方案?创建 4 个动作?重定向?什么?无论如何,谢谢你的帮助。
    • 采取不同的行动是明智之举。
    猜你喜欢
    • 2015-11-29
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多