Projekt

Allgemein

Profil

Aktionen

Bug #158

offen

[Bugsink] Exception: Cytrus\CytEventcalendar\Domain\Model\Instance::setStartDate(): Argument #1 ($startDate) must be of type DateTime, false given, called in /…

Von Bug Sink vor etwa 2 Monaten hinzugefügt.

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

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/047d0612-0ade-453b-b417-bc8958437d4a/event/last/

Typ: NEW issue

Projekt: www-verl-de

Bugsink Alert

Exception: Cytrus\CytEventcalendar\Domain\Model\Instance::setStartDate(): Argument #1 ($startDate) must be of type DateTime, false given, called in /…


Automatisch erstellt durch n8n

KI-Analyse:

1. Ursache identifizieren

Der Fehler taucht in der SuggestionController.php auf Zeile 162.
Dort wird die Methode setStartDate() eines Instance-Objekts aufgerufen, aber statt eines gültigen DateTime-Objekts wird false übergeben.

Typographisch bedingt (bzw. durch fehlerhafte Logik/Parsing) hat eine Methode wie strtotime(), DateTime::createFromFormat() oder eine eigene Parsing-Funktion false zurückgegeben – dies war nicht der Erwartungswert.

Verdachtsmerkmale:

  • setStartDate() erwartet ein DateTime-Objekt.
  • Der übergebene Wert ist false.
  • Dies deutet auf einen fehlerhaften Datumsstring oder ein Parsing-Problem hin.

2. Fix beschreiben (konkret)

Schritt-für-Schritt-Lösung:

✅ a) Fehlerhafte Zeile identifizieren:

In /pages/packages/cyt_eventcalendar/Classes/Controller/SuggestionController.php auf Zeile 162:

$instance->setStartDate($startDate);

Hier muss $startDate ein gültiges DateTime-Objekt sein.

✅ b) Root-Cause fixen:

Vermutlich wurde vorher ein String wie "2025-04-05" oder "heute" in ein DateTime umgewandelt, aber das Ergebnis war false.

Beispiel mit möglicher Fehlerquelle:

$startDateStr = '2025-04-05'; // oder dynamisch
$startDate = DateTime::createFromFormat('Y-m-d', $startDateStr);

👉 DateTime::createFromFormat() kann false zurückgeben, wenn der String nicht dem Format entspricht.

✅ c) Korrigierter Code:

$startDateStr = '2025-04-05'; // Beispiel – evtl. dynamisch
$startDate = DateTime::createFromFormat('Y-m-d', $startDateStr);

if ($startDate === false) {
    // Fallback: z.B. heute als Standard
    $startDate = new DateTime();
}

$instance->setStartDate($startDate);

Alternativ mit Fehlerbehandlung:

try {
    $startDate = new DateTime($startDateStr);
} catch (Exception $e) {
    $startDate = new DateTime(); // Fallback
}

✅ d) Optional: Validierung einbauen

vor der Übergabe an setStartDate() prüfen:

if (!($startDate instanceof DateTime)) {
    throw new InvalidArgumentException('Invalid start date given');
}

3. Betroffene TYPO3 Extension nennen

🔍 Extension: cyt_eventcalendar
📍 Paketpfad: /pages/packages/cyt_eventcalendar/
🎯 Klasse: Cytrus\CytEventcalendar\Controller\SuggestionController
🧩 Methode: setStartDate() im Model Cytrus\CytEventcalendar\Domain\Model\Instance


4. Confidence (0-100%)

🎯 Confidence: 95%

Begründung:

  • Der Fehler ist klar: false statt DateTime.
  • Der Stack Trace führt direkt zum Controller und der Zeile 162.
  • TYPO3 nutzt PSR-7-Tracing – keine Debug-Ebene fehlt.
  • Typische Fehlerquelle: falsches Datumsformat oder falsche Annahme bezüglich Rückgabewert von DateTime::createFromFormat().

✅ Zusammenfassung

Aspekt Wert
Ursache false statt DateTime bei setStartDate()
Ort SuggestionController.php, Zeile 162
Extension cyt_eventcalendar
Lösung Robuste Datums-Pflogik mit Fallback oder Exception-Handling einbauen
Confidence 95%

Wenn du zugriff auf den Dateiinhalt hast, würde ich mir die Zeilen um 162 in der Controller-Datei ansehen.

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF