在CakePHP网址中转义冒号(:)

时间:2012-11-07 17:24:01

标签: cakephp

我有一个简单的cakePHP动作,它通过url参数查找某人通过它的标题创建的帖子。最近,一个帖子放在标题中包含冒号(:),该蛋糕被解释为命名参数。

虽然使用

构建网址并不困难
str_replace(':', 'BANANA!_replace_colons, YAY safenow', $name)

我很好奇是否有标准或更优雅的方式来做到这一点。

2 个答案:

答案 0 :(得分:1)

如果你想在网址中传递它,你可以随时对该标题进行urlencode。

如果帖子标题是“foo:bar”而不是

/post/foo:bar
你应该

/post/foo%3Abar

因为稍后您可能会有一个包含斜杠/的帖子标题,您将不得不添加另一个str_replace ...或者可能会有带重音的字符。

在我的情况下,我总是在桌子上有一个名为“title_url”的第二个字段,它是标题的Slug,我在网址中使用了这个title_url。所以在我的例子中,url就像是

/post/foo_bar

比urlencode更具人性化。

但是,路由器上有一个名为"greedy star" (/*) and the "trailing star" (/**)的选项。它们将帮助您捕获参数,即使它们包含特殊字符

希望这有帮助

答案 1 :(得分:1)

我刚用数组('action'=>'view','name'=> $ name); 蛋糕似乎能够处理第一个结肠的一切就好了。