The default controller for extension "ExtensionName" and plugin "PluginName" can not be determined. Please check for TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin() in your ext_localconf.php.

Ich habe ein Plugin zu einer Extension hinzugefügt, einen Controller erstellt, das Plugin konfiguriert und in meine Seite eingefügt. Soweit alles gut und eigentlich auch ganz simpel – aber dann bekam ich die oben genannte Fehlermeldung „The default controller for extension X and plugin Y can not be determined.“….

Man sollte meinen das Problem ist total einfach zu beheben, allerdings gibt es hier ausnahmen die nicht so einfach sind, wie sie scheinen.

Aber natürlich gibt es auch hierfür eine Lösung 🙂

Konfiguration des Plugins

Ich habe mein Plugin ganz normal, wie ich es immer mache, in meine Extension eingefügt. Zuerst in der ext_tables.php:

ExtensionUtility::registerPlugin(
    'Vendorname.' . GeneralUtility::underscoredToUpperCamelCase('extension_name'),
    'PluginName',
    'Anzeigename in Pluginauswahl'
);

Dann in der ext_localconf.php:

ExtensionUtility::configurePlugin(
 'Vendorname.' . GeneralUtility::underscoredToUpperCamelCase('extension_name'),
    'PluginName',
    [
        'Controllername' => 'action1,action2'
    ],
    // non-cacheable actions
    [
        'Controllername' => 'action2'
    ]
);

Soweit so gut.

Nun, nachdem ich das Plugin auf einer Seite eingefügt habe, kam dann die besagte Fehlermeldung.
Lange Recherche und einiges Haare raufen, hat dann am Ende zum Ergebnis geführt.

Die selbe Extension hat diverse Plugins und einige davon nutzen eine eigene FlexForm. Mein neues Plugin nutz KEINE FlexForm. Ich habe beim erstellen des Plugindatensatzes im Backend zuerst das falsche Plugin ausgewählt, welches einen anderen Controller sowie eine FlexForm benutzt, somit wurde in der Datenbank das Feld ‚pi_flexform‘ gefüllt.

Nun versucht das eingefügte Plugin auf die Daten aus der FlexForm zuzugreifen, was aber nicht funktionieren kann.

Lösungen

Die einfachste Lösung:

Die einfachste Lösung ist, einfach das Plugin zu löschen, neu zu erstellen und darauf zu achten dass bei der Auswahl des Plugins direkt das korrekte ausgewählt wird.

Dann wird das ‚pi_flexform‘-Feld nicht gefüllt, und der Controller kann korrekt ermittelt werden – Fertig.

Eine andere Lösung

Etwas komplizierter, aber für einen TYPO3-Entwickler eine Kleinigkeit, ist es, das Datenbankfeld ‚pi_flexform‘ des betroffenen Datensatzes zu leeren.

Die UID des Datensatzes steht im Backend, diese UID aus der Tabelle ‚tt_content‘ heraussuchen und dort das Feld pi_flexform einfach leeren und speichern. Schon funktioniert es wieder und die Fehlermeldung verschwindet – auch Fertig.


Es gibt noch eine wesentlich komplexere Lösung, bei der geprüft wird ob das Ausgewählte Plugin FlexForms verwendet. Dies ist aber wesentlich komplizierter und würde diesen Beitrag sprengen.

Falls ihr mit diesem Problem zu kämpfen hattet und es möglicherweise durch diesen Beitrag lösen konnten, würde ich mich freuen wenn ihr mir einen Kommentar dazu da lasst.

Bis zum nächsten Beitrag

Naderio / Thomas