一些上下文:我需要缓存CakePHP网站的主页 - 除了一个小部分,它根据用户的IP地址显示用户本地的事件。
你显然可以使用< cake:nocache>标记以指示不应缓存的页面的一部分;但是你不能用这些标签包围控制器设置变量以使其动态化。一旦页面被缓存,就我所知,这就是控制器动作。
可以使用nocache标记有用的内容是元素和帮助程序。因此,我在这些标签中创建了一个元素,它调用辅助函数来访问模型并获取适当的数据。从我正在使用的助手那里得到模型:
$this->Modelname =& ClassRegistry::init("Modelname");
然而,在我看来,就CakePHP和一般的MVC原则来说,这是一种不经常的做事方式。所以我的问题是,这是一种获得我想要做的事情的合适方式,还是应该发出警告铃声?有没有更好的方法来实现我在这里失踪的目标?
答案 0 :(得分:1)
尝试将代码放在元素中,并在元素内部使用requestAction,而不是使用Helper。
请参阅此链接
http://bakery.cakephp.org/articles/gwoo/2007/04/12/creating-reusable-elements-with-requestaction
这比尝试在帮助程序中使用模型更好。
答案 1 :(得分:0)
除了打破所有精心设计的MVC原则之外?
除了将这个项放入元素之外,为什么不用一个简单的ajax来获取它呢?
无需直接从Views调用模型,也不需要使用requestAction来解决问题。 :)
HTH