[TYPO3-german] tx_extbase.objects

arno dudek webmaster at adgrafik.at
Sun Feb 20 11:40:58 CET 2011


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


More information about the TYPO3-german mailing list