Zur Zeit wird gefiltert nach: extbase
Filter zurücksetzen

23.04.2011
12:44

TYPO3, Extbase und Ajax

Extbase und Fluid scheinen sich mehr und mehr zum Standard in der TYPO3 Extension Entwicklung zu etablieren und das ist gut so, bieten sie doch – von ein paar kleineren Bugs abgesehen – eine solide Basis zur Entwicklung von modernen TYPO3 Erweiterungen.

Sauberer MVC-getriebener PHP-Code ist aber in vielen aktuellen Extensions nur noch die halbe Miete. Die Andere besteht aus einem dynamischen Frontend im Browser, welchem mit Hilfe von Javascript desktopähnliches Feeling beigebracht wird. Ein entscheidendes Bauteil für ein dynamisches Frontend sind asynchrone Serveraufrufe. Doch das nachladen kleiner Datenfetzen fällt mit Extbase noch nicht aus der Schachtel. Daher möchte ich zwei Möglichkeiten vorstellen, wie Extbase-AJAX-Aufrufe in Frontend und Backend realisiert werden können:

undefinedMöglichkeit 1 - Eigener Seitentyp für AJAX Aufrufe

Für AJAX-Calls wird ein eigener Seitentyp in Typoscript definiert, welcher nur die Ausgabe eines bestimmten Plugins zurückgibt.

  • Vorteil: Nur die schlanke Pagedefinition und das gewünschte Plugin wird ausgegeben.
  • Nachteile: Für jedes Plugin mus ein eigener Pagetype definiert werden. Funktioniert nur im Frontend.

undefinedMöglichkeit 2 - Extbase Dispatcher für eId / ajax.php

Mit EId im Frontend und ajax.php im Backend bietet TYPO3 dedizierte Möglichkeiten um Prozeduren ausserhalb von Templates und Content-Elementen auszuführen. Genau das wollen wir mit einem AJAX-Call auch tun.

  • Vorteile: eID / ajax.php bootstrappen nur einen Teil der TYPO3 Umgebung und sind daher leichtgewichtiger als ein Aufruf der index.php. Mit ajax.php ist das Verfahren auch im Backend möglich. Die Registrierung des Dispatchers muss für alle Extensions nur einmal erfolgen. Keine separate Typoscript Definition nötig.
  • Nachteil: PHP Klasse für den Dispatcher nötig.

[mehr]
Daniel Lienert(daniel@lienert.cc)PermalinkKommentare 17
Tags: typo3, extbase, php
Views: 1129

Zurück

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.

Daniel Lienert(daniel@lienert.cc)PermalinkKommentare 11
Tags: typo3, extbase
Views: 2304

Zurück

Design © by Daniel Lienert / 2009