CakePHP – 如何使用slug进行反向路由?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了CakePHP – 如何使用slug进行反向路由?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1457字,纯文字阅读大概需要3分钟。
内容图文
![CakePHP – 如何使用slug进行反向路由?](/upload/InfoBanner/zyjiaocheng/828/b24bff87352c4f6d8f8a49c4343fa9b1.jpg)
我正在使用CakePHP 1.3.我有一个产品型号.在DB表中,还有id和slug字段.
如果我的产品是id:37并且slug:My-Product-Title我希望产品的URL为:
products/37/My-Product-Title
而不是标准:
products/view/37
我创建了一个如下所示的路线:
Router::connect(
'/products/:id/:slug',
array('controller' => 'products', 'action' => 'view'),
array('pass' => array('id'), 'id' => '[0-9]+')
);
现在我可以访问http:// server / products / 37 / My-Product-Title,它将我带到了正确的位置.
但是,如何在$HtmlHelper->链接中自动构建正确的URL进行反向路由?
我用的时候:
echo $html->link(
'Product 37',
array('controller'=>'products', 'action' => 'view', 37)
);
它仍然输出标准产品/ view / 37 url.
最佳答案:
我不相信它可以自动神奇地完成.帮助程序只是一个“帮助者”,它根据给定的参数构建链接.
所以最简单的方法是在链接中添加另一个参数,如下所示:
echo $html->link(
'Product 37',
array('controller'=>'products', 'action' => 'view', 37, $slug)
);
$slug是slug字段中的数据.
可能它可以完成你的想法,但你需要非常严重地打破MVC模式:)
编辑:
再次阅读你的问题,我理解得很清楚.看看应该怎么做:
在您的router.php中添加以下规则:
Router::connect(
'/product/*',
array('controller' => 'products', 'action' => 'view')
);
请注意,它是/ product / *而不是/ products / *
您的链接应该像这样完成:
echo $html->link(
'Product 37',
array('controller'=>'products', 'action' => 'view', 37, 'my-product-title')
);
并且链接看起来像:
http://yourdomain.com/product/37/my-product-title
对我来说,你的建议是不好的做法.另外我认为从SEO的角度来看,总是用户重定向是不错的.
内容总结
以上是互联网集市为您收集整理的CakePHP – 如何使用slug进行反向路由?全部内容,希望文章能够帮你解决CakePHP – 如何使用slug进行反向路由?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。