• Allgemein(0)
  • [-]Technik(12)

Archiv

  • [-]2010(2)
    • [-]März(1)
    • [-]Februar(1)
  • [-]2009(9)
    • [-]Juli(1)
    • [-]Juni(1)
    • [-]Mai(1)
    • [-]April(1)
    • [-]März(1)
    • [-]Februar(4)

05.02.2010
10:15

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:

  1. $extensionName = t3lib_div::underscoredToUpperCamelCase($_EXTKEY);
  2. $pluginSignature = strtolower($extensionName) . '_pi1';  
  3.  
  4. $TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
  5.  t3lib_extMgm::addPiFlexFormValue($pluginSignature, 'FILE:EXT:'.$_EXTKEY.'/Configuration/FlexForms/ControllerActions.xml');    

2. Schritt FlexForm Konfiguration

  1.  <T3DataStructure>
  2.   <sheets>
  3.   <sDEF>
  4.      <ROOT>
  5.       <TCEforms>
  6.       <sheetTitle>Verhalten</sheetTitle>
  7.       </TCEforms>
  8.       <type>array</type>
  9.       <el>
  10.       <switchableControllerActions>
  11.          <TCEforms>
  12.           <label>Standardaktion des Plugins</label>
  13.           <config>
  14.           <type>select</type>
  15.           <items>
  16.             <numIndex index="0">
  17.                <numIndex index="0">Listenansicht</numIndex>
  18.                <numIndex index="1">MyController->list</numIndex>
  19.             </numIndex>
  20.             <numIndex index="1">
  21.                <numIndex index="0">Einzelansicht</numIndex>
  22.                <numIndex index="1">MyController->show;MyController->edit;MyController->update</numIndex>
  23.             </numIndex>
  24.             </items>
  25.           </config>
  26.          </TCEforms>
  27.       </switchableControllerActions>
  28.       </el>
  29.      </ROOT>
  30.   </sDEF>
  31.   </sheets>
  32. </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:

  1. MyController->show;MyController->update;MyController->edit

Die erste Action der Liste wird jeweils per default ausgeführt.

  •  
  • 5 Kommentare
  •  
Gravatar: KlausKlaus
08.03.2010

Vielen Dank für das Snippet. Mit ExtBase und Fluid macht Extensions entwickeln noch mehr Spass.

Gravatar: Georg RingerGeorg Ringer
21.03.2010

die html tags b sollten halt aus der flexform datei vorher noch raus ;)

Gravatar: natalianatalia
02.06.2010

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)

Gravatar: MimiMimi
29.06.2010
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

Gravatar: DanielDaniel
10.07.2010

Die b-Tags sind raus - was auch immer die da verloren hatten :)

Mein Kommentar

Ich möchte über jeden weiteren Kommentar in diesem Post benachrichtigt werden.

Zurück

Design © by Daniel Lienert / 2009