Typo3 Snippets  >  Snippets  >  Extension-Programmierung  >  Flexforms benutzen

Flexforms in eigene Extensions einbauen

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

Flexform-Felder:

Das oben genannte Beispiel erzeugt eine Select-Auswahl. Beispiele für andere Feldtypen gibt es auf dieser Übersicht über die Flexform-Felder.