Einfacher mit TYPO3 arbeiten
Immer mehr Extensions arbeiten mit Hilfe von Flexforms. Um diese auch in eigenen Extensions zu verwenden, muss man wie folgt vorgehen:
Die Vorgehensweise für ExtBase-Extensions in TYPO3 6.1+ ist hier beschrieben:
FlexForms mit TYPO3 6.1+ nutzen
1.) Erstellen einer Flexform-Datei (z.B. flexform.xml) nach dem Vorbild einer bestehenden Extension (z.B. News). Hier ein kleines Beispiel:
<T3DataStructure>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Options</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<what_to_display>
<TCEforms>
<label>What to display?</label>
<config>
<type>select</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">SINGLEVIEW</numIndex>
<numIndex index="1">SINGLEVIEW</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">FORM</numIndex>
<numIndex index="1">FORM</numIndex>
</numIndex>
</items>
<maxitems>1</maxitems>
<size>1</size>
</config>
</TCEforms>
</what_to_display>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
2) Einbinden dieser Flexform ins Backend mit Hilfe der Datei 'ext_tables.php':
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1'] ='pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY . '/flexform.xml');
3) Zugriff in der eigenen Extension auf die Variablen:
$this->pi_initPIflexForm(); // Einmal am Anfang der main-Funktion
$this->code = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'what_to_display', 'sDEF');
In diesem Beispiel enthält die Flexform nur ein einziges Input-Feld, nämlich eine Dropdown-Box mit den Werten 'SINGLEVIEW' und 'FORM'.
Ab Typo3 4.2.1 funktioniert auch folgendes (danke für die Mitteilung!):
$this->code = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'what_to_display');
Das oben genannte Beispiel erzeugt eine Select-Auswahl. Beispiele für andere Feldtypen gibt es auf dieser Übersicht über die Flexform-Felder.