2

在 cake 1.2 中,有一个功能允许开发人员不必创建模型,而是让 cake 在运行时进行检测并为您创建模型。这个过程每次都会发生并且很整洁,但在我的情况下非常危险。我在某个地方读到过这个,现在我正在经历这个不好的一面。

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

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

4

5 回答 5

3

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

AFAIK 你不能禁用自动建模。

于 2008-09-19T08:12:03.993 回答
3

蛋糕1.2

这是一个 hack,而且很丑,因为您需要编辑核心蛋糕文件,但这就是我的做法:\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 建议在第 95 行的 init 函数中将 $strict 更改为 trueCake\Utility\ClassRegistry.php

请参阅 Cake Api Docs for init

ClassRegistry.php - 初始化函数

于 2008-09-20T03:36:02.847 回答
1

采用

var $useTable = false;

在您的模型定义中。

于 2008-09-19T08:15:31.740 回答
1

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

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

于 2008-09-28T22:25:39.933 回答
0

呃……我们从哪里开始。首先,正如 Alexander 建议的那样,清除您的应用缓存。

如果您仍然得到相同的行为,则类和/或文件名可能有问题。

记住规则,对于控制器:

* classname: BlastsController
* filename: blasts_controller.php

型号:

* classname: Blast
* filename: blast.php

不要忘记正确处理不规则的曲折

于 2009-04-18T20:20:02.343 回答