Cakephp 2路由/ SEO友好的网址

时间:2015-02-14 01:12:13

标签: routing cakephp-2.6

对cakephp来说是全新的,并且真的很难理解文档。

我正在努力的想法是出租物业搜索。我有控制器租赁控制器

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

我还有一个侧栏,列出了区域

现在,我想要发生的是让用户查看索引,然后转到侧边栏并选择他们想要租用的区域。该URL应为.com / rental / region-name /

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

我如何a)设置路由来管理它和b)收集传递区域的功能。

很抱歉,如果这个基本但是我已经搜索过了,现在我要想一想 - 正如你可以想象的那样 - 我们一直都在这里学习一种新的做事方式。

感谢您的反馈 - Mark

修改

终于到了那里:

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

1 个答案:

答案 0 :(得分:1)

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

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

b)中 假设您的租赁表有一个区域字段:

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}')
);

将此添加到路线文件中。你现在应该可以像你提到的那样调用网址。 应该工作,但我还没有测试过。