# TYPO3 FlexForm: Alles Wissenswerte über die XML-Strukturen

FlexForms werden in TYPO3 genutzt, um Daten als XML-Struktur innerhalb einer Datenbankspalte zu speichern. Sie werden vor allem für Plugins und Inhaltselemente eingesetzt und können individuell konfiguriert werden.

## Was sind TYPO3 FlexForms?

TYPO3 FlexForms werden im Backend von [TYPO3](https://www.ionos.at/digitalguide/hosting/cms/typo3-ein-cms-mit-grosser-funktionsvielfalt/) genutzt, um Daten im [XML](https://www.ionos.at/digitalguide/websites/web-entwicklung/was-ist-xml/)-Format in einer **einzelnen Spalte** zu speichern. Dafür definiert die Struktur Formulare, die mit Werten gefüllt werden können. Diese werden in den meisten Fällen innerhalb der Datenbank in einer Spalte mit dem Namen „pi\_flexform“ hinterlegt. Der Vorteil dieser Methode besteht darin, dass Sie so eine beliebige Anzahl unterschiedlicher Felder definieren können, **ohne dafür eine eigene Datenbankstruktur** aufzusetzen. Auch der Einsatz unterschiedlicher Spalten innerhalb der Datenbank wird dadurch limitiert.

## Wofür werden die XML-Strukturen in TYPO3 genutzt?

FlexForms in TYPO3 sind optional. Zwar werden sie häufig für die Konfiguration von **Inhaltselementen oder Plugins** genutzt, diese Elemente können allerdings auch anderweitig erstellt werden. Die Herangehensweise mit TYPO3 FlexForms ermöglicht aber eine individuelle Konfiguration, die für jeden einzelnen Inhaltssatz angepasst werden kann. Plugin-Funktionen und Rendering können dadurch im Backend modifiziert werden. Aussehen und Funktionalität werden über die XML-Struktur definiert.

## Welche Arten von FlexForm-Feldern für TYPO3 gibt es?

Es gibt zahlreiche unterschiedliche Typen von FlexForms für TYPO3. In den nachfolgenden Abschnitten haben wir die wichtigsten Arten aufgeführt.

### Einfaches Textfeld

Möchten Sie ein einfaches Textfeld mit TYPO3 FlexForms erstellen, ist dies ein beispielhafter Code:

```xml
<T3DataStructure>
    <sheets>
        <sGeneral>
            <ROOT>
                <type>array</type>
                <el>
                    <simpleTextField>
                        <label>Textfeld</label>
                        <config>
                            <type>input</type>
                            <size>25</size>
                            <max>35</max>
                            <eval>trim</eval>
                        </config>
                    </simpleTextField>
                </el>
            </ROOT>
        </sGeneral>
    </sheets>
</T3DataStructure>
```

### Textbereiche mit und ohne RTE (Rich Text Editor)

Einen Textbereich ohne RTE erstellen Sie mit diesem Code:

```xml
<T3DataStructure>
    <sheets>
        <sGeneral>
            <ROOT>
                <type>array</type>
                <el>
                    <simpleTextArea>
                        <TCEforms>
                            <label>Textfeld ohne RTE</label>
                            <config>
                                <type>text</type>
                                <cols>40</cols>
                                <rows>5</rows>
                                <eval>trim</eval>
                            </config>
                        </TCEforms>
                    </simpleTextArea>
                </el>
            </ROOT>
        </sGeneral>
    </sheets>
</T3DataStructure>
```

Für einen Textbereich mit Rich Text Editor nutzen Sie einen Code wie diesen:

```xml
<T3DataStructure>
    <sheets>
        <sGeneral>
            <ROOT>
                <el>
                    <rteField>
                        <TCEforms>
                            <label>Textbereich mit RTE</label>
                            <config>
                                <type>text</type>
                                <cols>40</cols>
                                <rows>15</rows>
                                <enableRichtext>1</enableRichtext>
                                <richtextConfiguration>default</richtextConfiguration>
                            </config>
                        </TCEforms>
                    </rteField>
                </el>
            </ROOT>
        </sGeneral>
    </sheets>
</T3DataStructure>
```

### Ein einfaches Datumsfeld

Benötigen Sie ein Datumsfeld, können Sie diesen Code nutzen:

```xml
<T3DataStructure>
    <sheets>
        <sDEF>
            <ROOT>
                <TCEforms>
                    <sheetTitle>Standard</sheetTitle>
                </TCEforms>
                <type>array</type>
                <el>
                    <dateField>
                        <TCEforms>
                            <label>Datumsfeld</label>
                            <config>
                                <type>input</type>
                                <size>10</size>
                                <max>10</max>
                                <eval>date</eval>
                            </config>
                        </TCEforms>
                    </dateField>
                </el>
            </ROOT>
        </sDEF>
    </sheets>
</T3DataStructure>
```

### Checkboxen mit einem oder mehreren Feldern

Dies ist der Code für eine einfache Checkbox:

```xml
<T3DataStructure>
    <ROOT>
        <type>array</type>
        <el>
            <checkbox>
                <TCEforms>
                    <label>Einfache Checkbox</label>
                    <config>
                        <type>check</type>
                        <default>0</default>
                    </config>
                </TCEforms>
            </checkbox>
        </el>
    </ROOT>
</T3DataStructure>
```

Für eine Checkbox mit zwei Feldern können Sie einen Code wie diesen verwenden:

```xml
<T3DataStructure>
    <ROOT>
        <type>array</type>
        <el>
            <multiCheckBox>
                <TCEforms>
                    <label>Checkbox mit mehreren Optionen</label>
                    <config>
                        <type>check</type>
                        <renderType>selectCheckBox</renderType>
                        <items>
                            <item>
                                <label>Option 1</label>
                                <value>1</value>
                            </item>
                            <item>
                                <label>Option 2</label>
                                <value>2</value>
                            </item>
                        </items>
                    </config>
                </TCEforms>
            </multiCheckBox>
        </el>
    </ROOT>
</T3DataStructure>
```

### Radio-Buttons erstellen

Radio-Buttons werden in FlexForm für TYPO3 so angelegt:

```xml
<T3DataStructure>
    <ROOT>
        <type>array</type>
        <el>
            <radioOptions>
                <TCEforms>
                    <label>Radio-Buttons</label>
                    <config>
                        <type>radio</type>
                        <items>
                            <item>
                                <label>Option 1</label>
                                <value>Erster_Wert</value>
                            </item>
                            <item>
                                <label>Option 2</label>
                                <value>Zweiter_Wert</value>
                            </item>
                            <item>
                                <label>Option 3</label>
                                <value>Dritter_Wert</value>
                            </item>
                        </items>
                    </config>
                </TCEforms>
            </radioOptions>
        </el>
    </ROOT>
</T3DataStructure>
```

### Beispiele für Selectboxen mit FlexForm in TYPO3

Es gibt unterschiedliche Arten von Selectboxen. Möchten Sie eine Box mit festgelegten Werten anlegen, können Sie einen vergleichbaren Code verwenden:

```xml
<T3DataStructure>
    <ROOT>
        <type>array</type>
        <el>
            <selectOptions>
                <TCEforms>
                    <label>Selectbox mit festen Werten</label>
                    <config>
                        <type>select</type>
                        <items>
                            <item>
                                <label>Option 1</label>
                                <value>Erster_Wert</value>
                            </item>
                            <item>
                                <label>Option 2</label>
                                <value>Zweiter_Wert</value>
                            </item>
                            <item>
                                <label>Option 3</label>
                                <value>Dritter_Wert</value>
                            </item>
                        </items>
                    </config>
                </TCEforms>
            </selectOptions>
        </el>
    </ROOT>
</T3DataStructure>
```

Für eine Selectbox mit mehreren Auswahlmöglichkeiten ist dies der passende Code:

```xml
<T3DataStructure>
    <ROOT>
        <type>array</type>
        <el>
            <multiSelectOptions>
                <TCEforms>
                    <label>Selectbox mit mehreren Optionen</label>
                    <config>
                        <type>select</type>
                        <items>
                            <item>
                                <label>Option 1</label>
                                <value>Erster_Wert</value>
                            </item>
                            <item>
                                <label>Option 2</label>
                                <value>Zweiter_Wert</value>
                            </item>
                            <item>
                                <label>Option 3</label>
                                <value>Dritter_Wert</value>
                            </item>
                        </items>
                        <maxitems>3</maxitems>
                        <size>4</size>
                    </config>
                </TCEforms>
            </multiSelectOptions>
        </el>
    </ROOT>
</T3DataStructure>
```


This is a markdown version of: [https://www.ionos.at/digitalguide/hosting/cms/typo3-flexform/](https://www.ionos.at/digitalguide/hosting/cms/typo3-flexform/) for AI/LLM consumption.