Extbase: Verwendeter Controller & Action per Flexform konfigurierbar machen
Momentan beschäftige ich mich eingehender mit der in Typo3 4.3 gestarteten MVC Erweiterung ExtBase. Gerade weil der neue Weg Extensions in Typo3 zu schreiben noch so frisch ist, sind die Dokumentationen und Beispiele im Internet noch ziemlich dünn gesät.
Beispielsweise habe ich kein vollständiges Tutorial gefunden wie man die verwendete Standard-ExtBase–Action im Backend per FlexForms konfigurierbar macht. Genau darum soll es hier nun gehen.
1. Schritt XML-Datei anlegen und einbinden
Die FelexForm XML Datei wird im Verzeichnis Configuration -> Flexform im Extension Verzeichnis angelegt.
Eingebunden wird die Konfiguration in der ext_tables.php:
- $extensionName = t3lib_div::underscoredToUpperCamelCase($_EXTKEY);
- $TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
- t3lib_extMgm::addPiFlexFormValue($pluginSignature, 'FILE:EXT:'.$_EXTKEY.'/Configuration/FlexForms/ControllerActions.xml');
2. Schritt FlexForm Konfiguration
- <T3DataStructure>
- <sheets>
- <sDEF>
- <ROOT>
- <TCEforms>
- <sheetTitle>Verhalten</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;MyController->update</numIndex>
- </numIndex>
- </items>
- </config>
- </TCEforms>
- </switchableControllerActions>
- </el>
- </ROOT>
- </sDEF>
- </sheets>
- </T3DataStructure>
Das Ergebnis ist eine Dropdownbox zur Einfachen Auswahl der Controller-Action Kombination.
Die Definition der Kombinationen (Zeile 18,19) lassen sich beliebig nach dem Schema erweitern.
Achtung: Es können nur Actions aufgerufen werden, die in der Felxform konfiguriert sind. Um alle Actions eines Controllers aufrufen zu können, müssen diese mit Semikolon separiert aufgeführt werden:
Beispiel:
- MyController->show;MyController->update;MyController->edit
Die erste Action der Liste wird jeweils per default ausgeführt.
- 5 Kommentare


Vielen Dank für das Snippet. Mit ExtBase und Fluid macht Extensions entwickeln noch mehr Spass.
die html tags b sollten halt aus der flexform datei vorher noch raus ;)
Vielen Dank, funktioniert. Kleiner Hinweis: anstatt MyController muss man natürlich den Namen des Controller eintragen, allerdings ohne Suffix-Controller. Also, wenn z.B. Blog (für BlogController)
Korrigiertes Snippet
Hier zum Kopieren nochmal korrekt und ohne die b-Tags: <T3DataStructure>
<sheets>
<sDEF>
<ROOT>
<TCEforms>
<sheetTitle>Verhalten</sheetTitle>
</TCEforms>
<type>array</type>
<el>
<switchableControllerActions>
<TCEforms> Standardaktion des Plugins <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;MyController->update</numIndex>
</numIndex>
</items>
</config>
</TCEforms>
</switchableControllerActions>
</el>
</ROOT>
</sDEF> </sheets>
</T3DataStructure>
Viel Spaß und danke für den Beitrag! Mimi
Die b-Tags sind raus - was auch immer die da verloren hatten :)