我已阅读以下帖子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),因为它是我们正在处理的遗留应用程序。
答案 0 :(得分:2)
只要您正确地执行所有操作,就不需要在控制器中加载AppModel
,因为它应该已经可以通过控制器使用的模型获得。实际上你永远不应该直接调用AppModel
,因为这是为了在模型之间共享应该扩展AppModel
的公共逻辑。
因此,在您的AppController
中,您应该已经能够访问AppModel
中声明的函数,如下所示: -
$this->{$this->modelClass}->my_function();
在上面的代码中,{$this->modelClass}
将确定当前控制器正在使用的模型类,以便您可以在AppController
中轻松使用它。因此,如果您有PagesController
,则会将其解释为$this->Page->my_function()
。
如果这对您不起作用,那么我建议您在使用Cake进行开发时遇到问题,并且需要检查您使用模型的方式。