Bug #158
offen[Bugsink] Exception: Cytrus\CytEventcalendar\Domain\Model\Instance::setStartDate(): Argument #1 ($startDate) must be of type DateTime, false given, called in /…
0%
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 einDateTime-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:
falsestattDateTime. - 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