Typo3 Snippets  >  Snippets  >  ExtBase und Fluid  >  FlexForms mit TYPO3 6.1+ nutzen

FlexForm mit TYPO3 6.1+ nutzen

Wenn man ab TYPO3 6.1 mit den neuen ExtBase+Fluid-Extensions auf MVC-Basis arbeitet, dann funktioniert alles etwas anders. Auch die FlexForm-Einbindung in ein selbst erstelltes eigenes Plugin - wenn man z.B. ein Limit im Plugin angeben möchte - läuft jetzt anders:

1) Flexform anlegen

<T3DataStructure>
  <sheets>
    <sDEF>
      <ROOT>
        <TCEforms>
          <sheetTitle>Optionen</sheetTitle>
        </TCEforms>
        <type>array</type>
        <el>
          <settings.limit>
            <TCEforms>
              <label>Limit</label>
                <config>
                   <type>input</type>
                </config>
            </TCEforms>
          </settings.limit>   
        </el>
      </ROOT>
    </sDEF>
  </sheets>
</T3DataStructure>

Hier sind die unterschiedlichen Arten von FlexForm-Elementen aufgelistet. Als Speicherort für die FlexForm empfiehlt sich der Ordner:"Configurations/FlexForms"
Und als Namen der FlexForm nutzt man am besten: "###Action###.xml"

2) FlexForm registieren

In der ext_tables.php muss folgender Code eingefügt werden.
Hinweis: ###MYPLUGIN### muss durch den Namen des Plugins ersetzt werden! Diesen findet man z.B. als value in der Plugin-Auswahl des Content-Elements.

$extensionName = strtolower(\TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY));
$pluginName = strtolower('###MYPLUGIN###');
$pluginSignature = $extensionName.'_'.$pluginName;

$TCA['tt_content']['types']['list']['subtypes_excludelist'][$pluginSignature] = 'layout,select_key,pages';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:'.$_EXTKEY . '/Configuration/FlexForms/###Action###.xml'); 

3) In der Extension auf FlexForm-Feld zugreifen

In der Extension kann man dann im Controller so auf die eingesetzten FlexForm-Felder zugreifen:

$this->settings['limit'];

FlexForm-Felder

Das oben genannte Beispiel erzeugt ein normales Input-Feld. Beispiele für andere Feldtypen gibt es auf dieser Übersicht über die Flexform-Felder.