我需要在我的网站主页上显示最新的新闻标题。主页是静态的,基于 Cake 的默认 PagesController。
我有我网站的新闻部分的表格、模型、控制器和视图。
在食谱中我发现
Controller::requestAction
方法,但它也说如果我不使用缓存,它可能会导致性能下降。
据我所知,我也可以在 AppController 本身中为我的所有(或部分)控制器创建所需的方法,但是如何将此方法与特定模型链接?
什么是实现我的目标的正确 OOP 方式?
我不知道这是否是您的意思,但您可以通过添加访问与特定控制器无关的模型
public $uses = array('modelINeed');
在控制器的定义中。有关更多信息,请查看cakePHP 中的控制器,CTRL + F
并查找 "$uses", 。
我不建议将一个控制器加载到另一个控制器中。使用模型从数据库中检索数据!
如果您需要在控制器之间共享逻辑/数据,最好的办法是使用组件。将您的逻辑放入您的组件中,然后从您的每个控制器中简单地调用组件的方法。
编辑
要从您的组件访问您的模型,您可以简单地将其模型传递给您的组件的方法。例子:
零件
public function fetchMyData($model) {
return $model->find('all');
}
控制器
$mydata = $this->ComponentName->fetchMyData($this->ModelName);