0

我在使用 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”通过添加用户的偏好语言)?

提前致谢 !塞巴斯蒂安

4

1 回答 1

0

您可以在 beforeRender 中更改文件的前缀:

Configure::write('Cache.viewPrefix', 'YOURPREFIX');

您可以从参数或会话中获取前缀(取决于您的应用程序)。我不明白为什么前缀没有用。每个页面的每种语言都有一个文件。类似于“eng_my_action”文件的东西。如果您只想保存 1 个文件并用用户语言翻译它是没有意义的。因为视图已经这样做了(只是数据的解析器)。

字体:

http://book.cakephp.org/2.0/en/core-libraries/helpers/cache.html#using-the-helper(寻找 2.3 版的新功能)

好吧,我将采样 awnser 给你理解:

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);
}
于 2013-05-01T18:03:07.673 回答