Wenn man die eigene Extension im Backend bzw. z.B. in eigenen Content-Elementen verwenden möchte, helfen die FlexForms dabei. Hierzu muss man diese in einer XML-Dateizunächst definieren.
Man kann diese ebenfalls in Sheets aufteilen, die per Tab (Reiter) dargestellt werden. Unter anderem die bekannte Extension tt_news setzt auf diese Technik.
Ein Anwendungsfall wäre zum Beispiel eine Auswahlbox, wie in tt_news, in der man auswählen kann, ob die Darstellung der eigenen Extension als Liste oder Teaser erfolgen soll.
In meinem Fall lege ich eine XML-Datei in das root-Verzeichnis meiner Extension
die flexform_pi1.xml heißt:
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<ROOT>
<TCEforms>
<sheetTitle>Optionen</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<what_to_display>
<TCEforms>
<label>Was soll angezeigt werden?</label>
<config>
<type>select</type>
<items type="array">
<numIndex index="0" type="array">
<numIndex index="0">Liste</numIndex>
<numIndex index="1">list</numIndex>
</numIndex>
<numIndex index="1" type="array">
<numIndex index="0">Teaser</numIndex>
<numIndex index="1">teaser</numIndex>
</numIndex>
</items>
<maxitems>1</maxitems>
<size>1</size>
</config>
</TCEforms>
</what_to_display>
</el>
</ROOT>
</T3DataStructure>Anschließend müssen noch zwei Zeilen Code in der ext_tables.php der eigenen Extension eingefügt werden, um TYPO3 mit der XML-Datei bekannt zu machen.
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1'] = 'pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY.'/flexform_pi1.xml');Zugreifen kann man dann in der eigenen Klasse auf die Werte der FlexForms so:
// Die FlexForms werden initialisiert $this->pi_initPIflexForm(); // Anschließend kann auf auf die Werte folgendermaßen zugegriffen werden // in unserem Fall wurde ein Wert what_to_display in der XML definiert: $whatToDisplay=$this->pi_getFFvalue($this->cObj->data['pi_flexform'],"what_to_display");
