Zum Inhalt springen

Mit TYPOSCRIPT eingebundenes extbase Plugin - führt falsche Action aus/Action erzwingen

Erstellt am 9. Januar 2015 · 5 Antworten · letzte Antwort am 12. Januar 2015

Tags: Frage

zappzarapp ·

Ich binde auf einer Seite mit einem Content-Element mein Plugin ein was soweit funktioniert und eine "detailAction" oder "thanksAction" ausführt. Zusätzlich möchte ich per Typoscript das selbe Plugin noch einmal einbinden und hier die "metaAction" aufrufen. Ich habe das folgende Typoscript:

lib.test = USER
lib.test {
  userFunc =  TYPO3\CMS\Extbase\Core\Bootstrap->run
  vendorName = Vendor
  pluginName = Pi1
  extensionName = Promotions
  controller = Promotion
  action = meta
  switchableControllerActions {
    Promotion{
      1 = meta
    }
  }
  settings =< plugin.tx_promotions.settings
  persistence =< plugin.tx_promotions.persistence
  view =< plugin.tx_promotions.view  
}

Wenn die default action meines Plugins ausgeführt wird dann klappt alles und es wird korrekt vom tt_content Element das Ergebnis der showAction gezeigt und mein lib.test gibt mir das Ergebnis der metaAction aus. Wenn die Seite jetzt aber die action "thanks" aufruft index.php?...[action]=thanks habe ich zwei Möglichkeiten.

Variante 1:
Mit der oben zu sehenden TYPOSCRIPT Config bekomme ich diese Fehlermeldung:
The action "thanks" (controller "Promotion") is not allowed by this plugin. Please check TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin() in your ext_localconf.php.

Variante 2
Ich gebe zusätzlich in das TYPOSCRIPt noch die "thanks" action zu den swichtableControllerActions. Dann kommt keine Fehlermeldugn mehr, allerdings bekomme ich dann von lib.test auch die thanksAction zurück und nicht die eigentlich erwünschte metaAction die ich mit "action = meta" auswähle (bzw. dachte auszuwählen)

Wie kann ich in dem TYPOSCRIPT eine action "erzwingen"?

lg Matthias

toifel ·

Im Error wird doch explizit auf die ext_localconf.php hingewiesen.. wäre daher hilfreich, wenn du den entsprechenden Inhalt von configurePlugin() auch postest.

zappzarapp ·

Ja, diese Fehlermeldung ist imho falsch bzw. irreführend meine ext_localconf sieht folgendermaßen aus:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
	'Vendor.' . $_EXTKEY,
	'Pi1',
	array(
		'Promotion' => 'show, list, slider, apperance, thanks, meta',
		
	),
	// non-cacheable actions
	array(
		'Promotion' => '',
		'PromotionFields' => '',
		
	)
);

Es dürfte aber so sein, dass die Typoscript-Configuration oben mit switchableControllerActions dieses Setting überschreiben dürfte und es dann zu dieser Fehlermeldung kommt. Wenn es nicht über dieses TS Objekt eingebunden wird dann funktionieren ja auch alle actions.

Unbekannter Benutzer ·

Moin,

laut diesem Beispiel http://docs.typo3.org/typo3cms/extensions/news/Main/Tutorial/IntegrationWithTs/Index.html hier ( Unter dem Kapitel "List and detail on the same page using TypoScript" ) würde ich vermuten, dass du für das switchen der action die Zeilen

action = meta
switchableControllerActions.Promotions.1 = meta

für die thanksaction so abändern musst

action = thanks
switchableControllerActions.Promotions.1 = thanks

D.h. wenn ich dich richtig verstanden habe, benötigst du im Endeffekt für jede action eine Lib, bzw änderst diesen Wert abhängig von der action, die du auf der jeweiligen Seite aufrufen möchtest.

zappzarapp ·

Das Problem dürfte auftreten wenn per TYPOSCRIPT eingebundene Extensions und über die URL unterschiedliche Actions aufgerufen werden sollen. Es soll auf meiner Seite ja die "meta" Action mit einem TS Objekt eingebunden werden und zusätzlich befindet sich im tt_content das plugin, dass dann die show oder thanks Action aufruft (je nach URL) - sobald aber in der URL der [action] parameter ist dürfte auch das TS Object die entsprechende Action aufrufen wollen, was dann zu dem Fehler führt.