我需要在我网站的主页上显示最新的新闻标题。 主页面是静态的,基于Cake的默认PagesController。
我有我的网站新闻部分的表格,模型,控制器和视图。
在Cookbook中我找到了
Controller::requestAction
方法,但它也说如果我不使用缓存,它可能会导致性能不佳。
据我所知,我也可以在AppController本身创建一个所有(或部分)控制器所需的方法,但是我如何将这个方法与特定模型联系起来?
实现目标的正确OOP方式是什么?
答案 0 :(得分:1)
我不知道这是不是你的意思,但你可以通过添加
来访问与特定控制器无关的模型public $uses = array('modelINeed');
在控制器的定义中。有关详细信息,请查看此Controllers in cakePHP,CTRL + F
并查找“$ uses”,。
我不建议将一个控制器加载到另一个控制器中。使用模型从数据库中检索数据!
答案 1 :(得分:1)
如果您需要在控制器之间共享逻辑/数据,最好的办法是使用组件。将逻辑放在组件中,只需从每个控制器调用组件的方法即可。
修改强>
要从您的组件访问您的模型,您只需将它所使用的模型传递给组件的方法即可。例如:
组件
public function fetchMyData($model) {
return $model->find('all');
}
控制器的
$mydata = $this->ComponentName->fetchMyData($this->ModelName);