[TYPO3-mvc] Extend existing tables
arno dudek
webmaster at adgrafik.at
Mon Feb 21 16:53:55 CET 2011
Hi!
First I don't mean the fe_user-example with "Extend existing tables".
I post this question on TYPO3 german allready, but they mean it would be
better here ;)
My english is not very good so I copy the german post at the end, but I
found the same problem in another post in english:
http://lists.typo3.org/pipermail/typo3-project-typo3v4mvc/2010-January/002673.html
But in this post it ends with the announcement to debate it on
T3BOARD10. Now I don't know if this feature is allready available.
Hope you can help.
lg arno
========
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-project-typo3v4mvc
mailing list