0

如果 URL 中有撇号,我会遇到缓存问题。

例如:www.example.com/controller/action/What's+My+Name

当缓存不存在时,第一次加载时,它加载正常。但是,一旦创建了缓存,页面的后续加载会导致 PHP 语法错误,因为缓存文件中有一行:

$controller->here = $this->here = '/controller/action/What's My Name?';

请注意,撇号没有转义,因此 PHP 语法错误。

我怎样才能解决这个问题?这被认为是 Cake 中的错误吗?

谢谢。

4

2 回答 2

0

回到原来的答案——你生成了无效的 URL 并以某种方式期望框架不会破坏?

要么转义它们(urlencode)服务器端,要么为 url 生成一个 slug。

像您正在做的那样滥用 url 会导致结果不一致 - 客户端和 CakePHP 端。这不是一个模棱两可的情况——你做错了。

于 2011-03-17T23:22:55.853 回答
0

使用 PHP 的urlencode()函数,在将您的 URL 中可能包含非字母数字字符的组件进行编码,然后再将它们传递给HtmlHelper::link您或您有什么。

您可能还想考虑一个更大的问题,即首先在您的 URL 中使用非字母数字是否是一个好主意,这样做是否真正满足了需求。

于 2011-03-17T19:56:44.837 回答