Auto Model “recurso” de Disable Cakephp
-
01-07-2019 - |
Pergunta
No bolo de 1,2 há um recurso que permite que o desenvolvedor não tem que criar modelos, mas tem bolo de fazer o trabalho de detetive em tempo de execução e criar o modelo para você. Este processo acontece de cada vez e é puro, mas no meu caso muito perigosos. Eu li sobre isso em algum lugar e agora eu estou experimentando o lado ruim disso.
Eu criei um plugin com todos os arquivos e tudo parecia ser apenas grande. Isso é até que eu tentei usar algumas das associações e funções do modelo. Então reivindicações bolo que este modelo que eu criei não existe. Eu reduzi-lo a bolo usando esse recurso modelo de auto em vez de jogar e erro ! Então, eu não tenho idéia o que é! Errado
Alguém sabe como desativar esse recurso modelo de auto? É uma boa idéia, mas eu não consigo encontrar onde eu errado se foi com o meu plugin e um erro seria muito útil!
Solução 2
Cake 1.2
É um hack e é feio cus você precisa arquivos bolo edição do núcleo, mas isto é como eu fazê-lo: \ Cake \ libs \ class_registry.php: Linha 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 recomenda mudar $ rigorosa para true na função init na linha 95 da Cake\Utility\ClassRegistry.php
Outras dicas
Há sempre a possibilidade de realmente criar o arquivo modelo e conjunto var $ useTable = false.
Se isto não é o que você está pedindo e o modelo e suas associações realmente existem, mas bolo parece ser incapaz de encontrá-los, você tem que verificar triplicar os nomes de todos os modelos e seus nomes de classe, tanto no real definição do modelo e nas definições de associação.
AFAIK você não pode desativar a modelagem automática.
Use
var $useTable = false;
em sua definição de modelo.
Excluir todos os arquivos em cache (todos os arquivos sob app / tmp, manter as pastas)
Na maioria dos casos onde os modelos parecem estar agindo de maneiras inesperadas, muitas vezes eles não incluem mudanças que você fez, é porque esse bolo é useing uma versão antiga em cache do modelo.
Uh ... onde é que vamos começar. Primeiro, como Alexander sugeriu, limpar o cache do aplicativo.
Se você ainda obter o mesmo comportamento, provavelmente há algo errado com os nomes de classe e / ou arquivos.
Lembre-se as regras , para o controlador:
* classname: BlastsController
* filename: blasts_controller.php
para o modelo:
* classname: Blast
* filename: blast.php
Do not foget para lidar com as inflexões irregulares corretamente.