[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