Immer wenn ich meine ich hätte das Konzept von OXID verstanden und in Modulen Klassen oder Methoden überschreibe, scheitere ich wieder. Mir ist immer noch nicht ganz klar, wann ich in welchem Controller welche Objekte zur Verfügung habe bzw. sie mir verfügbar machen kann.
In dem unten gezeigten Beispiel möchte ich die Methode _sendOrderByEmail der Klasse oxOrder so erweitern, dass ich eine Bestellbestägigung nicht nur an den User und Shopowner versende, sondern auch an den Hersteller (die von mir erweiterten Hersteller-Daten muss ich mich mir dann halt noch holen). Ich scheitere aber schon daran, dass das Überschreiben der Methode fehlschlägt.
Über die metadata.php definiere ich meine eigene Order Klasse:
‘oxorder’ => ‘modul/models/custom_oxorder’,
in der dann einfache nur die Methode der vererbenden Klasse durchreiche.
<?php class custom_oxorder extends custom_oxorder_parent { protected function _sendOrderByEmail($oUser = null, $oBasket = null, $oPayment = null) { parent::_sendOrderByEmail( null, null, null ); } }
$oUser, $oBasket, $oPayment werden dann ja erst in der Methode _sendOrderByEmail der Elternklasse Order mit Daten gefüllt:
// add user, basket and payment to order
$this->_oUser = $oUser;
$this->_oBasket = $oBasket;
$this->_oPayment = $oPayment;
Trotzdem bekomme ich beim Abschluss des Checkouts den Fehler, dass $oBasket null sei und die Order nicht abgeschlossen werden kann. Oder müsste ich hier tatsächlich die die Objekte $oUser, $oBasket, $oPayment und nicht null übergeben? Ich bin aber davon ausgegangen, dass ich hier nur den Teil ergänzen müsste, der ich der Methode hinzufügen möchte.
Leider scheitere ich immer wieder an solchen Fragen. Ich suche noch nach einer Doku, in der beschrieben wird, wie im OXID Framework an beliebiger Stelle Klassen vererbt und Objekte verfügbar gemacht werden können. Vielleicht hat da ja jemand einen Tipp für mich. Dabei suche ich nicht die Umsetzung eines konkreten Beispiels (wie im Kochbuch), sondern eine grundlegende Erklärung, mit der ich die Umsetzung der eigenen Ideen herleiten kann. Das Konzept verdichtet und eingedampft auf wenige Seiten. Vielleicht gibt’s da ja was.