Hallo Liste!

Ich habe da ein kniffliges Problem für T3-Experten und hoffe ihr könnt mir da weiterhelfen. Es geht dabei um das Projekt ad_google_maps das extbase nutzt (http://forge.typo3.org/projects/show/extension-ad_google_maps).

Die Extension soll nach einem Lego-System aufgebaut werden, indem man verschiedene Google Maps-Layertypen frei hinzufügen kann. Derzeit ist sie ähnlich dem tt_content-Prinzip aufgebaut, mit der man verschiedene Typen auswählen kann.

Jeder Typ hat einen eigenen Prozessor, der die eingegebenen Daten verarbeitet. In der Basis Extension (ad_google_maps) gibt es jetzt drei Typen: Marker, Ployline und Polygon. Ist "Marker" gewählt wird ein Objekt von "Tx_AdGoogleMaps_MapPluginAdapter_LayerBuilder_Marker" erstellt, usw.

Der zweite Schritt ist nun, eine Extension zu erstellen, die einen weiteren Typ hinzufügt. Mit der TCA-Tabelle und dem BE-Formular habe ich keine Probleme. Das funktioniert soweit. Im Formular kann man jetzt einen weiteren Typ mit den dazugehörigen Feldern auswählen. Dazu habe ich eine Erweiterte Klasse "Tx_AdGoogleMapsLayerKml_Domain_Model_Layer" mit den zusätzlichen Felder erstellt, die die Basisklasse "Tx_AdGoogleMaps_Domain_Model_Layer" erweitern soll.

Modell der Basisklasse:
class Tx_AdGoogleMaps_Domain_Model_Layer extends Tx_Extbase_DomainObject_AbstractEntity implements Tx_AdGoogleMaps_Domain_Model_LayerInterface

Modell der Erweiterung:
class Tx_AdGoogleMapsLayerKml_Domain_Model_Layer extends Tx_AdGoogleMaps_Domain_Model_Layer

Die Daten werden jetzt aber in der Basis Extension (ad_google_maps) verarbeitet, die das Modell "Tx_AdGoogleMaps_Domain_Model_Layer" läd. Diese enthält aber noch nicht die Felder der Erweiterung.

Nach stundenlangen Suchen habe ich config.tx_extbase.objects gefunden, dass so aussieht, als würde es mein Problem lösen.

config.tx_extbase.objects {
        Tx_AdGoogleMaps_Domain_Model_LayerInterface {
                className = Tx_AdGoogleMapsLayerKml_Domain_Model_Layer
        }
        Tx_AdGoogleMaps_Domain_Repository_LayerRepositoryInterface {
                className = 
Tx_AdGoogleMapsLayerKml_Domain_Repository_LayerRepository
        }
}

Nur wird noch immer die Basisklasse geladen. Ich vermute mal, dass ein Modell nicht per inject geladen wird und diese Konfiguration nicht greift.

Oder kurz gefragt: Wie kann man eine Modell-Klasse einer Extension erweitern?

Zusatz: Das entspricht nicht dem "Tx_Extbase_Domain_Model_FrontendUser"-Beispiel. Da dort die Daten meist in der Erweiterung verarbeitet werden.

lg arno
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an