我遇到了CakePHP(2.3)CacheHelper的麻烦。 这实际上是一个强大的工具,但它并不适合我正在做的事情。
我有一个国际化的网站,该语言可以通过用户的偏好设置,也可以通过URL参数(lang:xx)“强制”设置。
因此,缓存页面“controller / action / yy”可以与“controller / action / yy / lang:xx”相同。最糟糕的是,“controller / action / yy”可以用英语,法语或其他方式缓存。
有没有办法更改缓存文件的名称(前缀显然不是解决方案)(以便“controller / action / yy”将始终缓存为“controller / action / yy / lang:xx” “通过添加用户的偏好语言?”
提前致谢! 塞巴斯蒂安
答案 0 :(得分:0)
您可以在beforeRender中更改文件的前缀:
Configure::write('Cache.viewPrefix', 'YOURPREFIX');
你可以从params或session获取你的前缀(取决于你的app)。 我不明白为什么前缀没用。每个页面的每种语言都有一个文件。像“eng_my_action”文件之类的东西。 如果您只想保存1个文件并使用用户语言翻译它是没有意义的。因为视图已经这样做了(只有数据的解析器)。
字体:
http://book.cakephp.org/2.0/en/core-libraries/helpers/cache.html#using-the-helper(在2.3版中寻找新功能)
那么, 我将为你理解芒果的样品:
public function beforeRender(){
$lang = isset($this->params["named"]["lang"]) ? $this->params["named"]["lang"] : "eng"; // verify if is the default language(eng) or is in params
if($this->Auth->user("lang")){
$lang = $this->Auth->user("lang"); // This is a example how to take the default language from a user. You need to change it to your app.
}
Configure::write('Cache.viewPrefix', $lang);
}