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");