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

时间:2012-08-16 16:58:30

标签: php cakephp

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

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

在Cookbook中我找到了

Controller::requestAction

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

据我所知,我也可以在AppController本身创建一个所有(或部分)控制器所需的方法,但是我如何将这个方法与特定模型联系起来?

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

2 个答案:

答案 0 :(得分:1)

我不知道这是不是你的意思,但你可以通过添加

来访问与特定控制器无关的模型
public $uses = array('modelINeed');

在控制器的定义中。有关详细信息,请查看此Controllers in cakePHPCTRL + F并查找“$ uses”,。

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

答案 1 :(得分:1)

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


修改

要从您的组件访问您的模型,您只需将它所使用的模型传递给组件的方法即可。例如:

组件

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

控制器

$mydata = $this->ComponentName->fetchMyData($this->ModelName);