CakePHP 中的反向路由基于 Slug 的 URL
Posted
技术标签:
【中文标题】CakePHP 中的反向路由基于 Slug 的 URL【英文标题】:Reverse Routing Slug-Based URL in CakePHP 【发布时间】:2011-07-23 14:30:19 【问题描述】:(我知道这个网站上还有一些其他的反向路由问题,但我没有太多运气来回答我的特定问题,所以我会问我更具体的问题......)
我正在构建一个站点,其 URL 现在需要基于 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->link 参数中传递任何数组来创建我正在寻找的 :controller/:slug 格式吗?还是我现在必须减少损失并退出反向路由?
【问题讨论】:
【参考方案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 的链接
【讨论】:
以上是关于CakePHP 中的反向路由基于 Slug 的 URL的主要内容,如果未能解决你的问题,请参考以下文章