Projekt

Allgemein

Profil

Aktionen

Bug #372

offen

[Bugsink] TYPO3\CMS\Extbase\Mvc\Exception\InvalidControllerNameException: The controller "search" is not allowed by plugin "Pi2". Please check for TYPO3\CMS\Ex…

Von Bug Sink vor 22 Tagen hinzugefügt.

Status:
Neu
Priorität:
wichtig
Zugewiesen an:
-
Beginn:
29.09.2026
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/1e74b351-b50b-4e11-bb84-1751afdfa05d/event/last/

Typ: NEW issue

Projekt: www-fuchsfelge-com

Bugsink Alert

TYPO3\CMS\Extbase\Mvc\Exception\InvalidControllerNameException: The controller "search" is not allowed by plugin "Pi2". Please check for TYPO3\CMS\Ex…


Automatisch erstellt durch n8n

KI-Analyse:

1️⃣ Ursache (Root-Cause)

Symptom TYPO3\CMS\Extbase\Mvc\Exception\InvalidControllerNameException – „The controller 'search' is not allowed by plugin 'Pi2'.“
Was die Exception tatsächlich bedeutet Ein Front-End-Plugin (Pi2) versucht, einen Extbase-Controller (search) zu erreichen, der in der Plugin-Konfiguration (dem Aufruf von ExtensionUtility::configurePlugin() in ext_localconf.php) nicht erlaubt ist.
Warum der Stack-Trace auf die Middleware hinweist Die Anfrage durchläuft den regulären TYPO3-Anfragezyklus (AbstractApplication::run → RequestHandler → MiddlewareDispatcher …). Als der RequestHandler den passenden Plugin-Router auflöst, bittet er Extbase, den Controller search für das Plugin Pi2 zu instanziieren. Extbase überprüft die von der Extension registrierten erlaubten Controller und löst die Exception aus, weil search nicht in der Liste steht.

Zusammenfassung: Die Plugin-Konfiguration für das Plugin Pi2 enthält nicht den Controller search.


2️⃣ Konkreter Fix (was zu ändern ist)

  1. Öffne die ext_localconf.php der Extension, die Pi2 registriert (normalerweise <Vendor>/<Extension>/ext_localconf.php).

  2. Finde den configurePlugin()-Aufruf für Pi2. Ein typisches Muster sieht so aus:

ExtensionUtility::configurePlugin(
    'MyExtension',            // Extension name
    'Pi2',                    // Plugin signature (what you see in the page module)
    ['Default' => 'Default'], // allowed controllers – currently missing 'search'
    []                        // actions (if you use multiple actions per controller)
);
  1. Füge search zum erlaubten Controller-Set hinzu (oder erstelle ein neues Set, falls ['Default' => 'Default'] das Einzige ist, was aktuell existiert).
ExtensionUtility::configurePlugin(
    'MyExtension',
    'Pi2',
    ['Default' => 'Default', 'Search' => 'Search'], // <-- added 'Search' => 'Search'
    [] // actions – optional, nur benötigt wenn du mehrere Aktionen pro Controller hast
);

Wenn deine Extension mehrere Aktionen innerhalb eines Controllers unterstützt (z. B. search → search, search → result), kannst du die zweite Argumente (die actions-Array) anpassen:

ExtensionUtility::configurePlugin(
    'MyExtension',
    'Pi2',
    ['Default' => 'Default', 'Search' => 'Search'],
    ['Search' => ['search', 'result']] // erlaubt die Aktionen search & result innerhalb des Search-Controllers
);
  1. Speichere die Datei und leere den Cache (caching deaktiviert, wenn möglich, oder führe typo3cms cache:flush aus).

  2. Überprüfe das Verhalten erneut – der Request, der auf einen search-Controller für das Plugin Pi2 verweist, sollte nun durch den korrekten Extbase-Aktionsmethoden (searchAction() / searchAction($searchTerm)) bedient werden.

Warum ist das wichtig?
ExtensionUtility::configurePlugin ist die einzige Stelle, an der TYPO3 weiß, welche Extbase-Controller durch ein Frontend-Plugin aufgerufen werden dürfen. Wenn ein Controller fehlt, wirft Extbase die InvalidControllerNameException frühzeitig im Request-Lifecycle (wie in den gezeigten Frames) aus.


3️⃣ Welche TYPO3 Extension ist betroffen?

Die Exception verrät uns nur den Plugin-Signaturenamen (Pi2). Die Extension, die dieses Plugin registriert, ist diejenige, deren ext_localconf.php den configurePlugin()-Aufruf enthält.

Typische Namenskonvention Beispiel-Extension (diejenige, die tatsächlich Pi2 verwendet)
pi2 (selbstbenannt) typo3/pi2 (historische Extension, wird selten verwendet)
my_extension Jede Drittanbieter- oder Unternehmens-Extension, die Pi2 für einen Content-Element-Typ definiert (z. B. ein benutzerdefiniertes „Search Box“-Plugin)

Wichtigste Erkenntnis: Du musst die Extension finden, die ExtensionUtility::configurePlugin('*', 'Pi2', …) enthält. Dies ist normalerweise die Extension, deren Name im ersten Argument des Aufrufs erscheint (z. B. MyExtension oben). Sobald du den Extensjonsnamen kennst, kannst du den korrekten Speicherort (EXT:my_extension/ext_localconf.php) lokalisieren.

Falls du nicht sicher bist, wo Pi2 definiert ist, führe folgende Suche aus:

grep -R "configurePlugin.*'Pi2'" /path/to/your/typo3project/extensions/

Der gefundene Dateipfad verrät dir die Extension.


4️⃣ Confidence-Level

Faktor Bewertung
Die Exception-Nachricht ist eindeutig (InvalidControllerNameException) ✅ Hoch
Der Stacktrace leitet uns zum regulären TYPO3-Request-Handler weiter → confirmiert, dass der Fehler während der Controller-Auflösung auftritt ✅ Hoch
Die Lösung ist ein bekannter, dokumentierter Best-Practice-Schritt (ExtensionUtility::configurePlugin) ✅ Hoch
Die genaue Extension (Pi2) wird nicht vom Stacktrace angegeben, daher müssen wir auf das Muster configurePlugin annehmen ⚠️ Mittel
Gesamte Sicherheit des Schlags 90 %

Ich bin zu 90 % überzeugt, dass der Fix der hinzugefügte search-Controller in der configurePlugin-Konfiguration für die Extension ist, die Pi2 registriert. Wenn du den genauen Extensionsnamen nach der oben gezeigten Suche identifizierst, kannst du den Confidence-Wert auf 95–100 % erhöhen.


TL;DR

  • Die Exception tritt auf, weil das Plugin Pi2 nicht für den Extbase-Controller search konfiguriert ist.
  • Bearbeite ext_localconf.php der Extension, die Pi2 registriert, und füge search (oder Search => Search) zum erlaubten Controller-Set des Plugins hinzu (und optional actions für die dazugehörigen Aktionen).
  • Leere den Cache → der Request sollte nun korrekt durch die searchAction()-Methode des Extbase-Controllers bedient werden.
  • Das fehlende Element ist ein Konfigurationsfehler, kein Laufzeitfehler; das Beheben der configurePlugin-Zeile eliminiert das Problem zu 90 % der Sicherheit.

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF