Projekt

Allgemein

Profil

Aktionen

Bug #72

offen

[Bugsink] TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException: Required argument "instance" is not set for Cytrus\CytEventcalendar\Cont…

Von Bug Sink vor etwa 1 Monat hinzugefügt.

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

0%

Geschätzter Aufwand:

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. über plugin.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\Validate oder @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

  1. Fluid-Template prüfen (z. B. EXT:cyt_eventcalendar/Resources/Private/Templates/Event/Detail.html):

    • Stelle sicher, dass das Argument instance beim Aufruf der Action übergeben wird:
      <f:link.action action="detail" arguments="{instance: event}">
          Details anzeigen
      </f:link.action>
      
    • Oder über f:uri.action in einem Formular:
      <f:form action="detail" arguments="{instance: event}" ...>
      
  2. TypoScript-Konfiguration prüfen (falls das Plugin über TypoScript eingebunden wird):

    • Stelle sicher, dass das Argument im settings- oder arguments-Array gesetzt ist:
      plugin.tx_cyteventcalendar {
          settings {
              defaultInstanceUid = 123  // Fallback-Wert
          }
      }
      

B) Controller-Anpassung (falls nötig)

  1. 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);
          }
      }
      
  2. Validierung anpassen (falls zu streng):

    • Entferne oder lockere @Validate-Annotationen:
      /**
       * @Extbase\Validate("NotEmpty", param="instance")
       */
      public function detailAction($instance) { ... }
      

C) Routing prüfen (falls benutzerdefinierte Routen)

  • Falls die Extension benutzerdefinierte Routen verwendet (z. B. über config.yaml), stelle sicher, dass das Argument instance aus 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.php oder Configuration/TypoScript/setup.typoscript) nötig sein.

Empfohlene nächste Schritte

  1. 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.
  2. Extension-Code prüfen:
    • Suche nach detailAction in EXT:cyt_eventcalendar/Classes/Controller/EventController.php.
    • Prüfe, ob das Argument in Fluid-Templates oder TypoScript gesetzt wird.
  3. 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

Aktionen

Auch abrufbar als: Atom PDF