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 进行开发时出错了,需要检查您如何使用模型。
我阅读了以下内容 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 进行开发时出错了,需要检查您如何使用模型。