Bug #72
offen[Bugsink] TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException: Required argument "instance" is not set for Cytrus\CytEventcalendar\Cont…
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/89e67c35-79e0-4274-89c9-a92a93644953/event/last/
Typ: NEW issue
Projekt: www-rietberg-de
Bugsink Alert
TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException: Required argument "instance" is not set for Cytrus\CytEventcalendar\Cont…
Automatisch erstellt durch n8n
KI-Analyse:
Hier ist die präzise Analyse des Fehlers:
1. Ursache identifizieren¶
Fehler:
RequiredArgumentMissingException: Das Argument "instance" ist für die Action detail im EventController der Extension cyt_eventcalendar nicht übergeben worden.
Kontext:
- Der Fehler tritt auf, wenn Extbase eine Controller-Action (
detail) aufruft, aber ein obligatorisches Argument (instance) nicht in der Anfrage (GET/POST) oder im Routing (z. B. überplugin.tx_cyteventcalendar) verfügbar ist. - Typische Ursachen:
- Fehlendes Argument im Plugin-Aufruf (z. B. in Fluid-Templates oder TypoScript).
-
Falsche Konfiguration der Argument-Validierung im Controller (z. B.
@TYPO3\CMS\Extbase\Annotation\Validateoder@Extbase\Validate). - Routing-Problem: Das Argument wird nicht aus der URL extrahiert (z. B. bei benutzerdefinierten Routen).
- Manueller Aufruf der Action ohne Argument (z. B. in einem Hook oder Command).
2. Fix beschreiben (konkret)¶
Lösungsansätze:
A) Argument im Plugin-Aufruf sicherstellen¶
-
Fluid-Template prüfen (z. B.
EXT:cyt_eventcalendar/Resources/Private/Templates/Event/Detail.html):- Stelle sicher, dass das Argument
instancebeim Aufruf der Action übergeben wird:<f:link.action action="detail" arguments="{instance: event}"> Details anzeigen </f:link.action> - Oder über
f:uri.actionin einem Formular:<f:form action="detail" arguments="{instance: event}" ...>
- Stelle sicher, dass das Argument
-
TypoScript-Konfiguration prüfen (falls das Plugin über TypoScript eingebunden wird):
- Stelle sicher, dass das Argument im
settings- oderarguments-Array gesetzt ist:plugin.tx_cyteventcalendar { settings { defaultInstanceUid = 123 // Fallback-Wert } }
- Stelle sicher, dass das Argument im
B) Controller-Anpassung (falls nötig)¶
-
Argument-Definition prüfen (in
EventController.php):- Stelle sicher, dass das Argument korrekt deklariert ist:
/** * @param \Cytrus\CytEventcalendar\Domain\Model\Event $instance */ public function detailAction(\Cytrus\CytEventcalendar\Domain\Model\Event $instance) { // ... } - Falls das Argument optional sein soll, setze einen Default-Wert:
public function detailAction(\Cytrus\CytEventcalendar\Domain\Model\Event $instance = null) { if ($instance === null) { throw new \TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException('Instance is required.', 123456789); } }
- Stelle sicher, dass das Argument korrekt deklariert ist:
-
Validierung anpassen (falls zu streng):
- Entferne oder lockere
@Validate-Annotationen:/** * @Extbase\Validate("NotEmpty", param="instance") */ public function detailAction($instance) { ... }
- Entferne oder lockere
C) Routing prüfen (falls benutzerdefinierte Routen)¶
- Falls die Extension benutzerdefinierte Routen verwendet (z. B. über
config.yaml), stelle sicher, dass das Argumentinstanceaus der URL extrahiert wird:routeEnhancers: CytEventcalendar: type: Extbase extension: CytEventcalendar plugin: Eventcalendar routes: - routePath: '/event/{instance}' _controller: 'Event::detail' _arguments: instance: instance
D) Fallback für fehlende Argumente¶
- Falls das Argument dynamisch generiert wird (z. B. aus der Datenbank), füge einen Fallback im Controller ein:
public function detailAction($instance = null) { if ($instance === null) { $instance = $this->eventRepository->findByUid($this->settings['defaultInstanceUid']); } $this->view->assign('instance', $instance); }
3. Betroffene TYPO3 Extension¶
-
Name:
cyt_eventcalendar(Hersteller: Cytrus) -
Controller:
EventController -
Action:
detail -
Argument:
instance(erwartet ein Objekt vom Typ\Cytrus\CytEventcalendar\Domain\Model\Event)
4. Confidence¶
- 95% (hohe Sicherheit, da der Fehler klar auf ein fehlendes Argument hindeutet und die Lösungsansätze standardisierte Extbase-Patterns abdecken).
-
Unsicherheitsfaktoren:
- Die genaue Ursache hängt von der Implementierung der Extension ab (z. B. ob das Argument über TypoScript, Fluid oder Routing gesetzt wird).
- Falls die Extension keine Dokumentation hat, könnte ein Blick in den Quellcode (z. B.
ext_localconf.phpoderConfiguration/TypoScript/setup.typoscript) nötig sein.
Empfohlene nächste Schritte¶
-
Debugging:
- Prüfe die Request-Parameter (z. B. mit
var_dump($this->request->getArguments())im Controller). - Nutze den TYPO3 Admin Panel oder Xdebug, um den Aufruf der Action nachzuvollziehen.
- Prüfe die Request-Parameter (z. B. mit
-
Extension-Code prüfen:
- Suche nach
detailActioninEXT:cyt_eventcalendar/Classes/Controller/EventController.php. - Prüfe, ob das Argument in Fluid-Templates oder TypoScript gesetzt wird.
- Suche nach
-
Fallback implementieren:
- Falls das Argument optional sein soll, passe den Controller an (siehe Punkt 2B).
Falls der Fehler nach diesen Schritten weiterhin besteht, wäre ein Ausschnitt des Controllers oder des Fluid-Templates hilfreich für eine genauere Analyse.
Nichts anzuzeigen