在蛋糕1.2中,有一个功能允许开发人员不必创建模型,而是让蛋糕在运行时执行检测工作并为您创建模型。这个过程每次都会发生并且很整洁,但在我看来非常危险。我在某处读到了这个,现在我遇到了这方面的不好的一面。
我已经创建了一个包含所有文件的插件,一切看起来都很棒。直到我试图使用一些模型的关联和函数。然后蛋糕声称我创建的这个模型不存在。 我使用此自动模型功能将其缩小为蛋糕,而不是投掷和错误!所以我不知道出了什么问题!
有人知道如何禁用此自动模型功能吗?这是一个很好的想法,但我似乎无法找到我的插件出错的地方,错误会非常有用!
答案 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
答案 2 :(得分:1)
使用
var $useTable = false;
在您的模型定义中。
答案 3 :(得分:1)
删除所有缓存文件(app / tmp下的所有文件,保留文件夹)
在大多数情况下,模型似乎以意想不到的方式运行,通常它们不包括您所做的更改,这是因为该蛋糕使用的是模型的旧缓存版本。
答案 4 :(得分:0)
如果仍然有相同的行为,那么类和/或文件名可能有问题。
记住the rules,对于控制器:
* classname: BlastsController
* filename: blasts_controller.php
代表型号:
* classname: Blast
* filename: blast.php