1

我正在使用 ClassRegistry::init 方法在另一个模型中实例化一些模型。

所以我有

app/Model/Report.php app/Model/KPI/Factory.php

我使用以下方法将模型包含在 KPI 文件夹中:

App::build(array(
    'Model' => array(APP . 'Model' . DS . 'KPI' . DS)
));

使用控制器中的模型是可以的。但是当使用带有 Report.php 的 ClassRegistry::init 时,我收到一个奇怪的错误,说“无法重新声明类”。

更奇怪的是它可以在 Windows 上找到,但在 Linux 上却失败了。

谢谢

4

1 回答 1

0

我相信 App::build 方法用于向您的路径添加其他目录。模型目录中的所有内容都应该由 Cake 自动加载,即使它位于子目录中,因此您不需要 App::build。假设 Factory 类被声明为

class Factory extends AppModel {}

那么你应该可以使用它

ClassRegistry::init('Factory')

如果您有多个带有名为“factory”的类的子目录,则将它们重命名为 KPI_Factory 并使用

ClassRegistry::init('KPI_Factory')

请注意,这一切都未经测试,但希望能让您走上正确的道路。

于 2013-07-17T21:23:36.970 回答