0

要访问另一个控制器中的模型,目前我使用$this->loadModel('Setting')类中的命令。我希望任何其他类都可以访问我的模型“设置”,而无需我一直使用,我该$this->loadModel('Setting')怎么做?

4

1 回答 1

2

默认情况下,CakePHP 将自动加载“适合”控制器名称的模型(例如,Post模型将自动加载为PostsController)。

也就是说,如果您没有指定要加载的模型

手动指定要在控制器中加载哪些模型

与 CakePHP 中的大多数东西一样,您可以通过手动覆盖“自动”设置来覆盖它;您可以通过$uses属性指定要在 Controller 中使用的模型;

public $uses = array(
    'ModelA',
    'ModelB',
);

这将在控制器中加载“ModelA”和“ModelB”,可以通过控制器$this->ModelA$this->ModelB在控制器内部访问它们。

$usesController 的属性会与AppModel的属性合并$uses,所以如果你将Setting模型添加到$uses你的 AppController 中,那么它会自动加载到每个扩展了 AppController 的 Controller 中

阅读文档:应用控制器

临时访问模型

如果您需要在项目中的任何位置访问模型,但主要是如果您只需要在某些条件或特定操作内访问,您可以通过ClassRegistry;启动模型

例如;

 $ModelA = ClassRegistry::init('ModelA');

或者,如果您只需要模型中的一些数据,但之后不需要;

 $projects = ClassRegistry::init('Project')->find('list');
于 2013-03-28T19:34:56.337 回答