Flexform für Typo3 Extbase Extensions

  • Flexform-Datei erstellen. Generell ist der Speicherort variabel, aber meiner Meinung nach gehört die Datei in den Ordner Configuration/FlexFormsder Extbase-Extension. Nachfolgend eine Beispieldatei (Configuration/FlexForms/setup.xml):
    <?xml version="1.0" encoding="UTF-8"?>
    <T3DataStructure>
      <sheets>
        <sDEF>
          <ROOT>
            <TCEforms>
              <sheetTitle>Flexform für Typo3 Extbase</sheetTitle>
            </TCEforms>
            <type>array</type>
            <el>
              <switchableControllerActions>
              <TCEforms>
              <label>Standardaktion des Plugins</label>
              <config>
              <type>select</type>
              <items>
                <numIndex index="0">
                    <numIndex index="0">Listenansicht</numIndex>
                    <numIndex index="1">MyController->list</numIndex>
                </numIndex>
                <numIndex index="1">
                    <numIndex index="0">Einzelansicht</numIndex>
                    <numIndex index="1">MyController->show;MyController->edit</numIndex>
                </numIndex>
                </items>
              </config>
              </TCEforms>
          </switchableControllerActions>
            </el>
          </ROOT>
        </sDEF>
      </sheets>
    </T3DataStructure>
  • Erweiterung der ext_tables.php, damit die Datei eingebunden wird:
    // Include flex forms
    $pluginName='pi'; // siehe Tx_Extbase_Utility_Extension::registerPlugin
    $extensionName = t3lib_div::underscoredToUpperCamelCase($_EXTKEY);
    $pluginSignature = strtolower($extensionName) . '_'.$pluginName;
    $TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
    t3lib_extMgm::addPiFlexFormValue($pluginSignature, 'FILE:EXT:' .
                  $_EXTKEY . '/Configuration/FlexForms/setup.xml');

Das obige Beispiel fügt dem Plugin eine Auswahlbox hinzu, über die der Controller bzw. die aufgerufene Action-Methode des Controllers ausgewählt werden kann. Es können nur Actions aufgerufen werden, die in der Flexform konfiguriert sind. Deswegen muß man dort alle Actions eines Controllers mit Semikolon getrennt aufführen.

Außerdem reicht es aus den Namen des Controllers ohne den Zusatz „Controller“ aufzuführen, also wenn der Controller den Klassennamen Tx_MyExtension_Controller_MyController hat, heißt der Wert in der Flexform My->list.

Ausführliche Infos findet man im Typo3 Wiki.

2 Gedanken zu “Flexform für Typo3 Extbase Extensions

  1. Hallo Tobias,
    super tutorial. aber vielleicht fehlt noch was? oder eine Aktualisierung.
    nachdem ich heute den ganzen tag mit rumprobieren verbracht habe:
    die Flexform brauchte bei mir (TYPO3 4.6 und extension_builder)
    noch die Zeile

    $TCA[‚tt_content‘][‚columns‘][‚pi_flexform‘][‚config‘][‚ds‘][‚,‘.$pluginSignature] = ‚FILE:EXT:divace/Configuration/FlexForms/setup.xml';
    außerdem hat der extension_builder die $pluginSignature anders gebaut;
    es gab schon etwas, das der extensionbuilder angelegt hatte, drunter:

    $TCA[‚tt_content‘][‚types‘][‚und_das_ist_dann_der_wert‘][‚showitem‘] = …

    im endeffekt war dann $pluginSignature= ‚und_das_ist_dann_der_wert'; die Lösung

Kommentar verfassen