要访问另一个控制器中的模型,目前我使用$this->loadModel('Setting')
类中的命令。我希望任何其他类都可以访问我的模型“设置”,而无需我一直使用,我该$this->loadModel('Setting')
怎么做?
问问题
47 次
1 回答
2
默认情况下,CakePHP 将自动加载“适合”控制器名称的模型(例如,Post
模型将自动加载为PostsController
)。
也就是说,如果您没有指定要加载的模型。
手动指定要在控制器中加载哪些模型
与 CakePHP 中的大多数东西一样,您可以通过手动覆盖“自动”设置来覆盖它;您可以通过$uses
属性指定要在 Controller 中使用的模型;
public $uses = array(
'ModelA',
'ModelB',
);
这将在控制器中加载“ModelA”和“ModelB”,可以通过控制器$this->ModelA
和$this->ModelB
在控制器内部访问它们。
$uses
Controller 的属性会与AppModel的属性合并$uses
,所以如果你将Setting
模型添加到$uses
你的 AppController 中,那么它会自动加载到每个扩展了 AppController 的 Controller 中
阅读文档:应用控制器
临时访问模型
如果您需要在项目中的任何位置访问模型,但主要是如果您只需要在某些条件或特定操作内访问,您可以通过ClassRegistry
;启动模型
例如;
$ModelA = ClassRegistry::init('ModelA');
或者,如果您只需要模型中的一些数据,但之后不需要;
$projects = ClassRegistry::init('Project')->find('list');
于 2013-03-28T19:34:56.337 回答