首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CacheHelper以不同的名称保存相同的缓存文件

CacheHelper以不同的名称保存相同的缓存文件
EN

Stack Overflow用户
提问于 2013-05-01 16:36:47
回答 1查看 299关注 0票数 0

我在使用CakePHP (2.3)的CacheHelper时遇到了麻烦。这真的是一个强大的工具,但它不太适合我正在做的事情。

我有一个国际化的网站,语言可以根据用户的喜好设置,也可以通过URL参数(lang:xx)“强制”设置。

因此,缓存的页面"controller/action/yy“可以与"controller/action/yy/lang:xx”是同一页。最糟糕的是,"controller/action/yy“可以用英语、法语或其他语言缓存。

有没有办法更改缓存文件的名称(前缀显然不是解决方案)(这样通过添加用户的首选语言,"controller/action/yy/lang:xx“将始终被缓存为”controller/action/yy/lang:xx“)?

提前感谢!塞巴斯蒂安

EN

回答 1

Stack Overflow用户

发布于 2013-05-02 02:03:08

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

代码语言:javascript
运行
复制
Configure::write('Cache.viewPrefix', 'YOURPREFIX');

您可以从params或session (取决于您的应用程序)获取前缀。我不明白为什么前缀没有用。每页的每种语言都有一个文件。类似于"eng_my_action“文件。如果您只想保存一个文件并将其翻译为用户语言,这是没有意义的。因为视图已经做到了这一点(仅仅是数据的解析器)。

字体:

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

好的,我会试一下awnser,让你明白:

代码语言:javascript
运行
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16315090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档