禁用Cakephp的自动模型“功能”

时间:2008-09-19 07:59:33

标签: php cakephp model cakephp-1.2

在蛋糕1.2中,有一个功能允许开发人员不必创建模型,而是让蛋糕在运行时执行检测工作并为您创建模型。这个过程每次都会发生并且很整洁,但在我看来非常危险。我在某处读到了这个,现在我遇到了这方面的不好的一面。

我已经创建了一个包含所有文件的插件,一切看起来都很棒。直到我试图使用一些模型的关联和函数。然后蛋糕声称我创建的这个模型不存在。 我使用此自动模型功能将其缩小为蛋糕,而不是投掷和错误!所以我不知道出了什么问题!

有人知道如何禁用此自动模型功能吗?这是一个很好的想法,但我似乎无法找到我的插件出错的地方,错误会非常有用!

5 个答案:

答案 0 :(得分:3)

总是有可能实际创建模型文件并设置var $ useTable = false 如果这不是你要求的并且模型及其关联确实存在,但是Cake似乎无法找到它们,你将不得不在实际中检查所有模型的名称及其类名。模型定义和关联定义。

AFAIK您无法禁用自动建模。

答案 1 :(得分:3)

Cake 1.2

这是一个黑客,你需要编辑核心蛋糕文件是丑陋的,但这就是我这样做的方式: \ cake \ libs \ class_registry.php:第127行

if (App::import($type, $plugin . $class)) {
    ${$class} =& new $class($options);
} elseif ($type === 'Model') {
    /* Print out whatever debug info we have then exit */
    pr($objects);
    die("unable to find class $type, $plugin$class");
    /* We don't want to base this on the app model */
    ${$class} =& new AppModel($options);
}

蛋糕2

Costa建议在Cake\Utility\ClassRegistry.php

的第95行的init函数中将$ strict更改为true

See Cake Api Docs for init

ClassRegistry.php - init function

答案 2 :(得分:1)

使用

var $useTable = false;

在您的模型定义中。

答案 3 :(得分:1)

删除所有缓存文件(app / tmp下的所有文件,保留文件夹)

在大多数情况下,模型似乎以意想不到的方式运行,通常它们不包括您所做的更改,这是因为该蛋糕使用的是模型的旧缓存版本。

答案 4 :(得分:0)

呃......我们从哪里开始。首先,正如亚历山大建议的那样,清除您的应用缓存。

如果仍然有相同的行为,那么类和/或文件名可能有问题。

记住the rules,对于控制器:

* classname: BlastsController
* filename: blasts_controller.php

代表型号:

* classname: Blast
* filename: blast.php

不要忘记handle the irregular inflections