CakePHP中的助手是否有调用模型的缺点?

时间:2011-06-26 04:05:59

标签: model-view-controller caching cakephp helpers controllers

一些上下文:我需要缓存CakePHP网站的主页 - 除了一个小部分,它根据用户的IP地址显示用户本地的事件。

你显然可以使用< cake:nocache>标记以指示不应缓存的页面的一部分;但是你不能用这些标签包围控制器设置变量以使其动态化。一旦页面被缓存,就我所知,这就是控制器动作。

可以使用nocache标记有用的内容是元素和帮助程序。因此,我在这些标签中创建了一个元素,它调用辅助函数来访问模型并获取适当的数据。从我正在使用的助手那里得到模型:

$this->Modelname =& ClassRegistry::init("Modelname");
然而,在我看来,就CakePHP和一般的MVC原则来说,这是一种不经常的做事方式。所以我的问题是,这是一种获得我想要做的事情的合适方式,还是应该发出警告铃声?有没有更好的方法来实现我在这里失踪的目标?

2 个答案:

答案 0 :(得分:1)

尝试将代码放在元素中,并在元素内部使用requestAction,而不是使用Helper。

请参阅此链接

http://bakery.cakephp.org/articles/gwoo/2007/04/12/creating-reusable-elements-with-requestaction

这比尝试在帮助程序中使用模型更好。

答案 1 :(得分:0)

除了打破所有精心设计的MVC原则之外?

除了将这个项放入元素之外,为什么不用一个简单的ajax来获取它呢?

  1. 将呼叫置于其自己的控制器操作中,以便目标网址 - > / controller / action(非常方便!)
  2. 将IP传回给该操作,以便在查找调用中使用
  3. 将ajax更新回调设置为元素内的目标,并相应地调用结果
  4. 无需直接从Views调用模型,也不需要使用requestAction来解决问题。 :)

    HTH