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
Im Error wird doch explizit auf die ext_localconf.php hingewiesen.. wäre daher hilfreich, wenn du den entsprechenden Inhalt von configurePlugin() auch postest.
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.
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.
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.
Alternativ erstellst du für die zweite Action ein zweites Plugin. Dann dürfte sich jeweils nur ein Plugin über die URL angesprochen fühlen.