Cakephp:URl中的撇号和查看缓存

时间:2011-03-17 19:45:30

标签: caching cakephp views urlencode apostrophe

如果网址中包含撇号,我的缓存存在问题。

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

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

$ controller-> here = $ this-> here ='/ controller / action /我的名字是什么?';

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

我该如何解决这个问题?这被认为是Cake中的错误吗?

感谢。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

回到原来的答案 - 你生成了无效的URL,并且某种程度上期望框架不会中断?

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

滥用你正在做的网址会导致不一致的结果 - 客户端和CakePHP端。这不是一个模棱两可的案例 - 你做错了。