Lazy Loading und Method-Calls

Hallo,

ich habe eine neue Model-Class (ABC) und eine neue ModelList-Class erstellt. In der Model-Class habe ich Lazy-Loding per default aktiviert. In der Model-Class gibt es eine Methode getXYZ();

Versuche ich nun im Template beim iterieren durch das ModelListObject auf die Methode zuzugreifen:

[{foreach from=$oABCList item=“oABCItem”}]
[{$oABCItem->getXYZ()}]
[{/foreach}]

… erhalte ich eine Fehlermeldung function ‘getXYZ’ does not exists or is not accessible.

Kann es sein das Lazy Loading mit Methoden gar nicht funktioniert, oder nicht dafür vorgesehen war?

mach mal ein [{$oABCItem|@var_dump}]
ist das ein ABC Class Object?

@vanilla_thunder: Problem gefunden. Es lag nicht am Lazy Loading.

Ich würde am liebsten die Post-Headline ändern, damit ich niemanden auf die falsche Fährte schicke.

Knackpunkt war:

Wenn man ein eigenes Model entwickelt, die Variable $_sClassName setzt und im OXID6-Style mit Namespaces arbeitet, dann in der Variable den führenden Slash (so wie man ihn mit use verwenden würde) entfernen. Richtig ist: Namespace + Classname:

protected $_sClassName = ‘MyVendor\MyModule\Application\Model\MyModel’;

Das Gleiche betrifft auch das Listmodel. Hier lautet die Variable:

protected $_sObjectsInListName = ‘MyVendor\MyModule\Application\Model\MyModel’;

Hintergrund ist, das wenn man sein eigenes Model in einem weiteren Modul erweitern will, findet der ModuleChainsGenerator das ursprüngliche Modul nicht. Denn in den Array, in dem die Erweiterungen gespeichert werden (“aModuleExtensions”), werden die Keys als “Namespace + Class” ohne Slash gespeichert.

1 Like