[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