Vra

In koek 1.2 is daar 'n kenmerk wat die ontwikkelaar in staat stel om nie modelle te skep nie, maar eerder dat koek die speurwerk tydens hardlooptyd laat doen en die model vir jou skep.Hierdie proses gebeur elke keer en is netjies, maar in my geval baie gevaarlik.Ek het iewers hiervan gelees en nou ervaar ek die slegte kant hiervan.

Ek het 'n inprop met al die lêers geskep en alles het net wonderlik gelyk.Dit is totdat ek probeer het om van die model se assosiasies en funksies te gebruik.Dan beweer cake dat hierdie model wat ek geskep het nie bestaan ​​nie. Ek het dit tot koek verklein deur hierdie motormodelfunksie in plaas van gooi en fout te gebruik!So ek het geen idee wat fout is nie!

Weet iemand hoe om hierdie motormodelfunksie uit te skakel?Dit is 'n goeie gedagte, maar ek kan blykbaar nie vind waar ek verkeerd gegaan het met my inprop nie en 'n fout sal baie nuttig wees!

Was dit nuttig?

Oplossing 2

Koek 1.2

Dit is 'n hack en dit is lelik, want jy moet kernkoeklêers redigeer, maar dit is hoe ek dit doen:\cake\libs\class_registry.php :reël 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);
}

Koek 2

Costa beveel aan om $strict na waar te verander in die init-funksie op reël 95 van Cake\Utility\ClassRegistry.php

Sien Cake Api Docs vir init

ClassRegistry.php - init funksie

Ander wenke

Daar is altyd die moontlikheid om werklik die modellêer te skep en var $useTable = false in te stel.
As dit nie is waarvoor jy vra nie en die model en sy assosiasies wel bestaan, maar dit lyk of Cake dit nie kan vind nie, sal jy die name van alle modelle en hul klasname in beide die werklike modeldefinisie en in die assosiasiedefinisies.

AFAIK jy kan nie die outomodellering deaktiveer nie.

Gebruik

var $useTable = false;

in jou modeldefinisie.

Vee alles uit gekas lêers (alle lêers onder app/tmp, hou die dopgehou)

In die meeste gevalle waar modelle blykbaar op onverwagte maniere optree, sluit hulle dikwels nie veranderinge in wat jy gemaak het nie, dit is omdat daardie koek 'n ou kasweergawe van die model gebruik.

Uh...waar begin ons.Maak eers, soos Alexander voorgestel het, jou programkas skoon.

As jy steeds dieselfde gedrag kry, is daar waarskynlik fout met die klas- en/of lêername.

Onthou die reëls, vir kontroleerder:

* classname: BlastsController
* filename: blasts_controller.php

vir model:

* classname: Blast
* filename: blast.php

Moenie vergeet om hanteer die onreëlmatige verbuigings behoorlik.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top