CakePHP 2 - 在 AppController 中加载 AppModel 功能

CakePHP 2 - loading AppModel functionality in AppController

我阅读了以下内容 post 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),因为它是我们正在处理的遗留应用程序。

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

因此,在您的 AppController 中,您应该已经能够像这样访问在 AppModel 中声明的函数:-

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

在上面的代码中 {$this->modelClass} 将确定当前控制器使用的模型 class,以便您可以在 AppController 中轻松使用它。所以如果你有一个 PagesController 这将被解释为 $this->Page->my_function().

如果这对您不起作用,那么我建议您在使用 Cake 进行开发时出错了,需要检查您如何使用模型。