Bug #153
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/0b94c8c0-8e1e-440f-a883-0a277c4e63f5/event/last/
Typ: NEW issue
Projekt: www-rietberg-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 entsteht, weil SuggestionController.php (Zeile 152) dem Methodenaufruf $instance->setStartDate() den Wert false übergibt, obwohl der Parameter typsicher als DateTime deklariert ist.
Konkrete Ursache: Ein Wert aus der Datenbank bzw. einer Datenquelle (vermutlich ein Datumsfeld aus einem Repository-Fetch) ist false statt eines gültigen DateTime-Werts. Typische Szenarien:
- Ein Datumsfeld in der Datenbank ist
NULL/leer, und der Extbase-Mapper oder ein manueller Lesezugriff liefertfalsestatt eines defaults. - Die Datumsfeld-Zuordnung im Repository oder in der Domain Model-Mapierung schlägt fehl (z.B. Feldname stimmt nicht überein, Format-Konvertierung fehlt).
- Ein
DateTime::createFromFormat()oder ähnlicher Aufruf gibtfalsezurück, ohne abgefangen zu werden. - Das Modell-Property ist nicht korrekt mit dem Datenbankfeld verknüpft (z.B. fehlende
@var-Annotation oder fehlende TCA-Configureierung), sodass Extbase den Rohwertfalsedirekt durchreicht.
2. Fix beschreiben (konkret)¶
Short-term (Schnellfix) in SuggestionController.php Zeile ~152:
// Statt:
$instance->setStartDate($rawDateValue);
// Dann:
if ($rawDateValue === false || $rawDateValue === null) {
$rawDateValue = new DateTime(); // oder DateTimeImmutable, oder einen Default-Wert verwenden
}
$instance->setStartDate($rawDateValue);
Besser (Root-Cause-Fix) im Instance Domain Model oder Repository:
- Sicherstellen, dass der Datumswert immer vor Übergabe an
setStartDate()in einenDateTime-Object konvertiert wird. - Im Domain Model
Instanceggf.setStartDate(?DateTime $startDate = null)erlauben und einen Default setzen. - Im Repository sicherstellen, dass Datumsfelder korrekt per
DateTime-Mapper verarbeitet werden (z.B. über$dateTimeStorageoder korrekte TCAeval-Config wiedatetime).
Empfohlener dauerhafter Fix:
// Im Repository oder DataMapper, wo das Datum extrahiert wird:
$startDate = !empty($row['start_date'])
? new DateTime($row['start_date'])
: new DateTime(); // Fallback
$instance->setStartDate($startDate);
3. Betroffene TYPO3 Extension¶
Cytrus\CytEventcalendar (Cyt Eventcalendar, Provider: Cytrus)
4. Confidence¶
90%
Die Diagnose ist sehr hochgradig sicher: Die Fehlermeldung ist eindeutig (false given bei DateTime-Erwartung), die Extension und die betroffene Datei/Metode sind exakt benannt. Die einzige Unsicherheit betrifft die exakte Quelle des false-Werts im Datenfluss (ob Repository, TCA-Mapping oder Datenbankfeld-Problem), was eine kleinere Detailfrage ist.
Nichts anzuzeigen