Deaktivieren CakePHPs Auto Modell „Feature“
-
01-07-2019 - |
Frage
In Kuchen 1.2 gibt es eine Funktion, die den Entwickler ermöglicht, keine Modelle erstellen müssen, sondern haben Kuchen tun während der Laufzeit der Detektivarbeit und erstellen für Sie das Modell. Dieser Prozess geschieht jedes Mal, und ist ordentlich, aber in meinem Fall sehr gefährlich. Ich las diese irgendwo und jetzt erlebe ich die schlechte Seite davon.
Ich habe ein Plugin mit allen Dateien erstellt und alles schien einfach toll zu sein. Das ist, bis ich versuchte, einige der Modell Verbände und Funktionen zu nutzen. Dann behauptet, Kuchen, dass dieses Modell die ich angelegt habe nicht existiert. Ich habe es auf Kuchen verengte diese Auto-Modell-Funktion anstelle des Werfens und Fehler mit ! Also ich habe keine Ahnung, was los ist!
Weiß jemand, wie dieses Auto Modell Funktion deaktivieren? Es ist ein guter Gedanke, aber ich kann nicht scheinen zu finden, wo ich mit meinem Plugin schiefgegangen habe und ein Fehler wäre sehr hilfreich!
Lösung 2
Cake 1.2
Es ist ein Hack und es ist hässlich cus Sie Kernkuchen Dateien bearbeiten müssen, aber das ist, wie ich es tun: \ Kuchen \ Libs \ class_registry.php: line 127ish
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);
}
Cake 2
Costa empfiehlt Linie auf $ streng auf true in der init-Funktion Ändern 95 von Cake\Utility\ClassRegistry.php
Andere Tipps
Es gibt immer die Möglichkeit, tatsächlich die Modell-Datei und legen var $ useTable = false zu erstellen.
Wenn dies nicht das, was Sie für Fragen und das Modell und seine Verbände tatsächlich existieren, aber Kuchen scheint nicht in der Lage zu sein, sie zu finden, werden Sie die Namen aller Modelle und ihre Klassennamen verdreifachen müssen überprüfen sowohl in der aktuellen Bestimmung des Modells und in den Assoziations Definitionen.
AFAIK Sie die automatische Modellierung nicht deaktivieren können.
Mit
var $useTable = false;
in Ihrem Modell Definition.
Löschen Sie alle Cache-Dateien (alle Dateien unter app / tmp, halten Sie die Ordner)
In den meisten Fällen, in denen Modelle scheinen auf unerwartete Weise zu handeln, die oft nicht sie Änderungen enthalten, die Sie gemacht haben, ist es, weil die Kuchen eine alte Cache-Version des Modells wird useing.
Uh ... wo fangen wir an. Zunächst wird, wie Alexander vorgeschlagen, löschen Sie den App-Cache.
Wenn Sie immer noch das gleiche Verhalten bekommen, gibt es wahrscheinlich etwas falsch mit den Klassen- und / oder Dateinamen.
Beachten Sie die Regeln für Controller:
* classname: BlastsController
* filename: blasts_controller.php
für Modell:
* classname: Blast
* filename: blast.php
nicht das foget zum die unregelmäßigen Beugungen zu behandeln richtig.