cake 1.2 中有一个功能,允许开发人员不必创建模型,而是让 cake 在运行时执行侦探工作并为您创建模型。这个过程每次都会发生并且很简洁,但就我而言非常危险。我在某处读到过这件事,现在我正在经历这件事的不好的一面。

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

有人知道如何禁用此汽车模型功能吗?这是一个好主意,但我似乎找不到我的插件出了问题的地方,错误将非常有帮助!

有帮助吗?

解决方案 2

蛋糕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 建议在第 95 行的 init 函数中将 $strict 更改为 true Cake\Utility\ClassRegistry.php

请参阅 Cake Api 文档以了解 init

ClassRegistry.php - 初始化函数

其他提示

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

AFAIK 你不能禁用自动建模。

使用

var $useTable = false;

在你的模型定义中。

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

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

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

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

记住 规则, ,对于控制器:

* classname: BlastsController
* filename: blasts_controller.php

对于型号:

* classname: Blast
* filename: blast.php

不要忘记 处理不规则的变化 适当地。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top