cakephp ClassRegistry :: init问题

时间:2013-06-19 14:02:56

标签: cakephp

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

所以我有

应用程序/型号/ Report.php 应用程序/型号/ KPI / Factory.php

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

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

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

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

由于

1 个答案:

答案 0 :(得分:0)

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

class Factory extends AppModel {}

那么你应该能够将它与

一起使用
ClassRegistry::init('Factory')

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

ClassRegistry::init('KPI_Factory')

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