我正在使用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::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的角度来看,总是用户重定向是不错的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。