CakePHP 2 - 在AppController

时间:2016-10-26 10:09:05

标签: cakephp cakephp-2.x

我已阅读以下帖子Calling AppModel function in AppController for cakephp,其中OP询问他们是否可以在AppController中使用AppModel中的函数。

给出的答案并没有真正解决这个问题(因为它谈到在另一个模型中使用AppModel 而不是控制器)。

那么,在AppController中做这样的事情是否可以接受?

$this->loadModel('AppModel');
$this->AppModel->my_function();

有人可能想要这样做的原因是AppController是在每个请求上运行的。如果你需要在每个请求上做一些涉及你的数据库的事情,那么它的逻辑可以在AppModel.php中,但可以通过AppController.php执行

请注意,这适用于Cake 2.0(不是3),因为它是我们正在处理的遗留应用程序。

1 个答案:

答案 0 :(得分:2)

只要您正确地执行所有操作,就不需要在控制器中加载AppModel,因为它应该已经可以通过控制器使用的模型获得。实际上你永远不应该直接调用AppModel,因为这是为了在模型之间共享应该扩展AppModel的公共逻辑。

因此,在您的AppController中,您应该已经能够访问AppModel中声明的函数,如下所示: -

$this->{$this->modelClass}->my_function();

在上面的代码中,{$this->modelClass}将确定当前控制器正在使用的模型类,以便您可以在AppController中轻松使用它。因此,如果您有PagesController,则会将其解释为$this->Page->my_function()

如果这对您不起作用,那么我建议您在使用Cake进行开发时遇到问题,并且需要检查您使用模型的方式。