Bug #135
offen[Bugsink] TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException: Required argument "eintrag" is not set for Citkomm\CitkoDirectory\Contro…
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/58fa09f0-c52c-49cc-abe3-c19c14e1e78e/event/last/
Typ: NEW issue
Projekt: www-verl-de
Bugsink Alert
TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException: Required argument "eintrag" is not set for Citkomm\CitkoDirectory\Contro…
Automatisch erstellt durch n8n
KI-Analyse:
1. Ursache identifikation
Der RequiredArgumentMissingException wird ausgelöst, weil Extbase beim Aufruf der Methode createAusbildung() des Controllers EintragController ein Request-Argument namens eintrag erwartet, dieses Argument aber von der Anfrage (URL, Formular, API-Aufruf usw.) nicht bereitgestellt wird. Da die Anfrage die Variable eintrag nicht enthält, bricht Extbase den Request ab.
Typische Gründe für diesen Zustand sind:
- Das Plugin / der Link, der den
createAusbildung-Action aufruft, ist nicht mit dem erforderlichen Argument-Parameter (&eintrag=…) konfiguriert. - Das Extbase-Routing (Typolink / Form) weist das Argument nicht an den Controller weiter.
- Eine Controller-Methode erwartet ein Objekt (
Citkomm\CitkoDirectory\Domain\Model\Eintrag) hat aber keinen Wert (z. B. keine ID) übergeben bekommen.
2. Fixbeschreibung (konkret)
Öption A – Fügen Sie das fehlende Argument zur Anfrage hinzu
-
Überprüfen Sie den Aufruf der Aktion – Stellen Sie sicher, dass die Anfrage, die
createAusbildungaufruft, das GET/POST-Parametereintragenthält (z. B.?eID=...&action=createAusbildung&eintrag=42oder ein Formular-Feld<input type="hidden" name="eintrag" value="42">). -
Aktualisieren Sie den Extbase-Plugin-Konfiguration (
tt_content→"Plug-in" → "Extbase Plugin"):- In der Liste „Argumente“ muss ein Eintrag hinzugefügt/aktiviert werden:
-
Name:
eintrag -
Datentyp:
Citkomm\CitkoDirectory\Domain\Model\Eintrag -
Erforderlich:
1
-
Name:
- Speichern und leeren Sie die Caching-Systeme. Der Plugin-Link generiert nun das korrekte
eintrag-Parameter.
- In der Liste „Argumente“ muss ein Eintrag hinzugefügt/aktiviert werden:
-
Wenn Sie die Anforderung nicht erzwingen können (z. B. die UI soll ohne explizite ID erstellt werden), ändern Sie den Controller:
class EintragController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController { /** * @var \Citkomm\CitkoDirectory\Domain\Repository\EintragRepository */ protected $eintragRepository; public function createAusbildungAction(?\Citkomm\CitkoDirectory\Domain\Model\Eintrag $eintrag = null) { if ($eintrag === null) { // Erstellen Sie eine neue Instanz aus dem Anfrageargument 'eintrag' (falls als Array übergeben) $eintragData = $this->request->getArgument('eintrag'); $eintrag = $this->eintragRepository->createFromArray($eintragData); } // …Rest der Action } }Machen Sie das Argument optional (
?) und holen Sie den Wert bei Bedarf mit$this->request->getArgument('eintrag').
Passen Sie auch die Annotationsdeklaration in der Controller-Klasse an (/** @var \Citkomm\CitkoDirectory\Domain\Model\Eintrag $eintrag */), um den Typ-Alias beizubehalten.
Öption B – Verwenden Sie eine URL-basierte Routing-Alternative
Wenn die Erstellung einer „Ausbildung“ unabhängig von einer bestehenden Eintrag-Entität ist, benennen Sie die Action um (oder erstellen Sie eine neue) und entfernen Sie das erforderliche Argument:
public function initializeCreateAusbildungAction()
{
$this->registerActionRoutes(
'createAusbildung',
'create-ausbildung',
['_controller' => 'Eintrag:createAusbildung']
);
}
// Keine Argumente erforderlich
public function createAusbildungAction() { … }
3. Betroffene TYPO3 Extension
Citkomm / CitkoDirectory (die Extension, die den EintragController bereitstellt).
4. Confidence
90 % – Die Ausnahmebotschaft stimmt exakt mit dem Extbase-Verhalten bei einem fehlenden Anforderungsparameter überein, und die oben genannten Schritte decken die häufigsten Ursachen für dieses Problem ab. Wenn jedoch ein benutzerdefinierter Middleware oder eine Ablaufverfolgung das Argument entfernt, könnte ein tiefer gehender Debugging-Ansatz erforderlich sein.
Nichts anzuzeigen