1. Oktober 2010 in TYPO3 von Leo
Eine Flexform kann in einer Extension benutzt werden, um eingaben und weiteres übers Backend an der Extension vorzunehmen.
Um solch eine Flexform in der eigenen Extension hinzuzufügen geht man folgendermassen vor:
1. Man legt in der eigenen Extension eine XML Datei an, am besten flexform.xml oder wie oft üblich flexform_ds.xml.
2. Nun fügt man folgende Zeilen in seine XML Datei ein:
<T3DataStructure>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Optionen</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<eine_option>
<TCEforms>
<label>Modus</label>
<config>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Listen Ansicht</numIndex>
<numIndex index="1">Detail Ansicht</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</eine_option>
</el>
</ROOT>
</sDEF>
</sheets>
</T3DataStructure>
Dies wäre ein Beispiel für eine Einstellung, welche natürlich so alleine nicht funktioniert.
3. Als nächstes müssen wir die Flexform in unserer Extension sozusagen registrieren, bzw. einbinden. Folgender Code kommt in die Datei “ext_tables.php” unserer Extension:
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1'] ='pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY . 'pi1/flexform_ds.xml');
Der Pfad in Zeile 2 muss je nachdem wo eure Flexform liegt und heisst noch angepasst werden.
4. Um nun auf die Einstellungen als Variabeln, welche wir über die Flexform eingegeben haben im Code der Extension zugreifen zu können, benötigen wir folgenden Code am Anfang (Main):
$this->pi_initPIflexForm();
Und um wirklich auf die Variabeln zugreifen zu können folgendes:
$this->code = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'eine_option', 'sDEF');
Übrigens, ab TYPO3 4.2.1 soll folgender Code reichen um auf die Einstellungen zuzugreifen:
$this->code = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'eine_option');
Eine Ausführliche Beschreibung zu Flexformen gibt es in der TYPO3 Wiki.