[TYPO3-german] Extbase: Mehrere Instanzen eines Plugins auf einer Seite - Fehler Action nicht erlaubt

Dirk Wenzel wenzel at webfox03.de
Thu Jan 24 18:26:53 CET 2013


Hallo Benjamin,
vielen Dank fürs Mitdenken und die Erklärungen.

Im konkreten Fall reicht es für mich zum Glück, dass die Default Action aufgerufen wird.

Am 24.01.2013 um 11:44 schrieb Benjamin Rau:
> Du kannst Extbase-konform ein Plugin nur global steuern. 
> Das liegt ganz einfach daran dass Extbase die Werte im Request auf Basis des Prefixes Extensionname - Pluginname (tx_yourext_yourplugin) an die jeweilige Extension übergibt.
> 
> Extbase wählt dann den auszuführenden Controller und Action auf Basis des Requests (tx_yourext_yourplugin[controller] und tx_yourext_yourplugin[action]).
> 
> Wie man hier sieht sind diese Parameter eben für alle Instanzen eines Plugins identisch und können somit auch nicht unterschieden werden.
> 
> Wir hatten vor kurzem im IRC die gleiche Problematik zu lösen.
> 
> Was nicht geht ist dynamisch per Parameter die Controller und Actions der verschiedenen Plugininstanzen zu überschreiben.
> 
> Was ginge wäre:
> Controller und Action per TS 'settings' für die Plugininstanz zu definieren - per Flexform.
> Diese Werte kannst du im Controller auslesen und auf Basis dessen im initializeView die Action überschreiben.
Diesen Teil verstehe ich nicht.

> Zusätzlich könnntest du, wenn weitere Argumente pro Instanz benötigt werden, diesen einen Prefix/Suffix geben.
> Hier bietet sich z.b. die ID des Contentelements an - diese ist eindeutig und pro Plugininstanz verschieden.
> 
> In der Praxis könnte dass dann für eine Pagination von zwei Plugininstanzen so aussehen:
> tx_yourext_yourplugin[currentPage][242]=12
> tx_yourext_yourplugin[currentPage][532]=3
> tx_yourext_yourplugin[currentPage][532]=3&tx_yourext_yourplugin[currentPage][242]=12
> 
> Auf Array-Basis funktioniert dass ganz gut - wie gesagt ist überhaupt nicht Extbase konform :)
Hm, klingt unelegant, oder?

Herzliche Grüße
Dirk



More information about the TYPO3-german mailing list