在CakePHP中反向路由基于Slug的URL

时间:2011-03-26 18:54:57

标签: cakephp routes url-routing slug

(我知道在这个网站上还有其他几个反向路由问题,但是我对于我的特定问题的答案没有太多运气,所以我会问我更具体的问题......)

我正在建立一个网站,其网址现在需要以slug为基础,即最初的news / item / 1现在必须拥有URL news / firstnewsitem。等等其他一些控制器。我可以轻松地使这些地址起作用,甚至可能不会踩到我现有的实用程序操作,例如:

Router::connect('/:controller/:slug',
    array('action'=>'item'),
    array('pass'=>array('slug'), 'slug'=>'[^(index|add|edit|view|delete)]')
);

但是,这些新链接的反向路由似乎不是首发:Cake仍然会生成诸如news / item / 3之类的链接。希望基于slug的URL会自动发生似乎很乐观,但是我可以在我的Html->链接参数中传递任何数组,这些参数将创建我正在寻找的:controller /:slug格式吗?或者我是否必须减少损失并在此时退回反向路由?

1 个答案:

答案 0 :(得分:1)

这里有一个非常不错的插件来处理基于slug的路由: https://github.com/jeremyharris/slugger

如果你使用了这个,你就可以创建类似这样的链接

$html->link("some item", array(
    'controller'=>'items',
    'action'=>'view',
    'Item'=>$item['id']
));

这将输出指向/ items / view / slug-for-your-item

的链接