我的应用程序根据产品的类别和名称生成各种网址。例如,按类别浏览产品,网址将是
localhost/category/Memory Cards
问题是空格被转换为%20
s。如果我urlencode
或rawurlencode
这些空格转换为+
符号,但/
也会转换为%xx
等效,这会导致无效的网址映射到控制器。
我需要使用+
符号而不是spaces
对所有网址进行编码。我可以使用帮手。但是,我需要在任何地方调用辅助方法。
我可以使用hooks
修改HTML,扫描所有网址并将spaces
替换为+
个符号吗?
我还要将网址从spaces
符号解码回+
。我怎么能这样做?
如果你认为我的方法完全错了,那么做什么是合适的方法?
答案 0 :(得分:3)
这样做的首选方法是在表格中添加一个字段(我通常使用“slug”作为字段名称),这是一个对URL名称友好的版本(小写,并替换空格和奇怪的字符破折号/下划线/等等,只需确保保持唯一,然后使用它来生成产品的网址并确定请求的产品。
所以你的网址看起来像localhost/category/memory-cards
。
您可以使用url_title()
生成slugs