Mit dieser Methode stößt man allerdings bald auf eine Schwachstelle. Nehmen wir einmal an, man möchte die Tabelle „tt_content“ erweitern, in der die Inhalte vorliegen. Das kann man erreichen, indem man ein neues Feld und die entsprechende TCA-Definition hinzufügt. Dieses Vorgehen mag zwar für zwei bis drei Extensions funktionieren, spätestens wenn man mehr Erweiterungen benötigt, sollte man dies auf eine andere Art regeln – schon damit die bestehende Tabelle nicht unnötig aufgebläht wird.
Flexforms
Eine Flexform ist im Grunde nichts anderes als eine etwas anders notierte TCA-Definition. Man definiert dabei in der Tabelle ein Feld vom Typ „flex“ und legt in dieses eine Flexform – ein XML-Dokument, das selbst wiederum ein komplexes Formular mit zahlreichen Feldern und sogar einzelnen Eingabeseiten (Sheets) definieren kann. Hauptanwendungsgebiet für Flexforms ist die Konfiguration von Plugins.
Die Konfiguration (alleine bei tt_news wären es 30 Optionen) wird nicht in der Tabelle „tt_content“ gespeichert, sondern im Feld „pi_flexform“. Genauer gesagt wird die Flexform selbst im Filesystem gespeichert (diese wird zum rendern der Backendformulare verwendet) und die in die Flexform eingegebenen Werte im Feld „pi_flexform“. Die für tt_news verwendete Flexform befindet sich in der Datei „typo3conf/ext/tt_news/flexform_ds.xml“ und sieht beispielsweise wie folgt aus:
<T3DataStructure> [...] <sheets> <sDEF> <ROOT> <TCEforms> <sheetTitle>LLL:EXT:tt_news/locallang_tca.xml:tt_news.pi_flexform.sheet_general</sheetTitle> <TCEforms> <type>array</type> <el> <what_to_display> <TCEforms> <label>LLL:EXT:tt_news/locallang_tca.xml:tt_news.pi_flexform.what_to_display</label> <config> <type>select</type> <items type="array"> <numIndex index="0" type="array"> <numIndex index="0">LIST</numIndex> <numIndex index="1">LIST</numIndex> </numIndex> <numIndex index="1" type="array"> <numIndex index="0">LATEST</numIndex> <numIndex index="1">LATEST</numIndex> </numIndex> [...] </config> </TCEforms> </what_to_display> [...] </el> </ROOT> </sDEF> [...] </sheets> </T3DataStructure>
Listing 1
In Listing 1 finden sich einige alte Bekannte: Das Feld, das im obigen Abschnitt definiert wird, hat den Namen „what_to_display“ und gibt den Modus an, in dem das Plugin laufen soll – also „LIST“, „LATEST“, „SINGLE“, „AMENU“ etc.







![TYPO3: 10 Jahre in 60 Sekunden zusammengefasst [Video]](http://t3n.de/uploads/t3n-news-post-361575_typo3_medium.jpg)