CakePHP 如何从另一个控制器检索数据


CakePHP how to retrieve data from another controller?

我需要在网站的主页上显示最新的新闻标题。主页是静态的,基于 Cake 的默认 PagesController。

我有表格,模型,控制器和视图的新闻部分。

在食谱中,我发现

Controller::requestAction

方法,但它也说如果我不使用缓存,可能会导致性能不佳。

据我所知,我还可以在AppController本身中创建所有(或某些)控制器所需的方法,但是如何将此方法与特定模型链接起来?

实现目标的正确 OOP 方法是什么?

如果您需要在控制器之间共享逻辑/数据,最好的选择是使用组件。将逻辑放在组件中,只需从每个控制器调用组件的方法。


编辑

要从组件访问模型,只需将模型传递给组件的方法即可。例:

元件

public function fetchMyData($model) {
    return $model->find('all');
}

控制器

$mydata = $this->ComponentName->fetchMyData($this->ModelName);
我不知道

这是否是您的意思,但是您可以通过添加来访问与特定控制器无关的模型

public $uses = array('modelINeed');

在控制器的定义中。有关更多信息,请查看 cakePHP 中的控制器,CTRL + F并查找"$uses",。

我不建议将一个控制器加载到另一个控制器中。使用模型从数据库中检索数据!