Pregunta

En Cake 1.2 hay una característica que permite al desarrollador no tener que crear modelos, sino que Cake haga el trabajo de detective en tiempo de ejecución y cree el modelo por usted.Este proceso ocurre cada vez y es ordenado pero en mi caso muy peligroso.Leí sobre esto en alguna parte y ahora estoy experimentando el lado malo de esto.

Creé un complemento con todos los archivos y todo parecía estar genial.Eso fue hasta que intenté utilizar algunas de las asociaciones y funciones del modelo.Entonces Cake afirma que este modelo que he creado no existe. Lo he reducido a pastel usando esta función de modelo automático en lugar de lanzar y error!¡Así que no tengo idea de qué pasa!

¿Alguien sabe cómo desactivar esta función de modelo automático?Es una buena idea, pero parece que no puedo encontrar dónde me equivoqué con mi complemento y un error sería muy útil.

¿Fue útil?

Solución 2

Pastel 1.2

Es un truco y es feo porque necesitas editar los archivos principales del pastel, pero así es como lo hago:\cake\libs\class_registry.php :línea 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);
}

pastel 2

Costa recomienda cambiar $strict a true en la función init en la línea 95 de Cake\Utility\ClassRegistry.php

Consulte Cake Api Docs para iniciar

ClassRegistry.php - función de inicio

Otros consejos

Siempre existe la posibilidad de crear el archivo modelo y establecer var $useTable = false.
Si esto no es lo que estás pidiendo y el modelo y sus asociaciones realmente existen, pero Cake parece no poder encontrarlos, tendrás que verificar tres veces los nombres de todos los modelos y sus nombres de clase tanto en el archivo real. definición del modelo y en las definiciones de asociación.

AFAIK, no puedes desactivar el modelado automático.

Usar

var $useTable = false;

en la definición de su modelo.

Eliminar todos archivos en caché (todos los archivos en app/tmp, conserve las carpetas)

En la mayoría de los casos en los que los modelos parecen actuar de manera inesperada, a menudo no incluyen los cambios que has realizado, es porque ese pastel utiliza una versión antigua en caché del modelo.

Uh... ¿por dónde empezamos?Primero, como sugirió Alexander, borre el caché de su aplicación.

Si sigue teniendo el mismo comportamiento, probablemente haya algún problema con la clase y/o los nombres de archivo.

Recordar las normas, para controlador:

* classname: BlastsController
* filename: blasts_controller.php

para modelo:

* classname: Blast
* filename: blast.php

No te olvides de manejar las inflexiones irregulares adecuadamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top