【问题标题】:Cakephp 2 Routing / SEO friendly urlsCakephp 2 路由/SEO 友好的网址
【发布时间】:2015-02-14 01:12:12
【问题描述】:

对 cakephp 完全陌生,并且很难理解文档。

我正在研究的想法是进行出租物业搜索。我有控制器出租控制器

在这里我有索引,我获取所有

我还有一个列出地区的侧边栏

现在,我希望用户查看索引,然后转到侧边栏并选择他们希望租用的区域。 URL 应该是 .com/rentals/region-name/

这将调用(这里可能是错误的)rentalsController > byRegion($region){ fetch....)

我如何 a) 设置路由来管理这个和 b) 收集通过的区域的功能。

对不起,如果这是基本的,但我已经搜索过,现在让我大吃一惊 - 正如你可以想象的 - 我们都曾在这里学习一种新的做事方式。

感谢您的所有反馈 - 马克

编辑

终于到了:

Router::connect(
    '/rentals-in-:region.html', 
    array( 'controller' => 'rentals', 'action' => 'byRegion' ),
    array( 'region' => '[a-zA-Z0-9\-]+', 'pass' => array('region'),
));

【问题讨论】:

    标签: routing cakephp-2.6


    【解决方案1】:

    a) 如果您是蛋糕新手,我不建议您在您的路线文件中玩耍。 如果您遵循 cake 的约定,您可以通过调用 /rentals/by_region/{region_name} 访问您的 RentalsController::byRegion ($ region) 操作。

    不要忘记创建您的视图文件 app/View/Rentals/by_region.ctp

    b) 假设您的 rents 表有一个 region 字段:

    public function byRegion ($region){
        $this->set ('rentals', $this->Rental->find ('all', array (
            'conditions' => array (
                'Rental.region LIKE' => $ region
            )
        )));
    

    编辑

    比你要找的:

    Router::connect(
       '/rentals/:region',
       array('action' => 'byRegion'),
       array('region' => '{your regex matching region}')
    );
    

    将此添加到您的路线文件中。您现在应该能够像您提到的那样调用 url。 应该可以,但我还没有测试过。

    【讨论】:

    • 嗨 Ben - 谢谢你的回复,但这不是我想要的 - 我正在寻找与 htaccess rewrite 相同的效果。即 - RewriteRule ^rentals-(.*).html$ rentals.php?region=$1 [l]
    • 谢谢本 - 你的编辑很接近这是我最后需要的 Router::connect( '/rentals-in-:region.html', array( 'controller' => ' Rentals', 'action' => 'byRegion' ), array( 'region' => '[a-zA-Z0-9\-]+', 'pass' => array('region'), ));
    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 2016-03-11
    • 2011-07-23
    • 2011-04-06
    • 2017-05-14
    • 2014-07-26
    • 1970-01-01
    • 2011-02-15
    相关资源
    最近更新 更多