Bug #73
offen[Bugsink] TypeError: Cytrus\CytEventcalendar\KeIndexer\EventIndexer::customIndexer(): Argument #2 ($indexerObject) must be of type Cytrus\CytEventcalendar\KeIn…
0%
Beschreibung
Bugsink: https://bugsink.cytrus.de/issues/issue/244588e5-72e4-4ee5-9d74-fa37487058e2/event/last/
Typ: NEW issue
Projekt: www-rietberg-de
Bugsink Alert
TypeError: Cytrus\CytEventcalendar\KeIndexer\EventIndexer::customIndexer(): Argument #2 ($indexerObject) must be of type Cytrus\CytEventcalendar\KeIn…
Automatisch erstellt durch n8n
KI-Analyse:
Analyse des Fehlers¶
1. Ursache identifizieren¶
Der Fehler tritt auf, weil die Methode customIndexer() der Klasse Cytrus\CytEventcalendar\KeIndexer\EventIndexer einen falschen Typ für das Argument $indexerObject erwartet.
-
Erwarteter Typ:
Cytrus\CytEventcalendar\KeIndexer\IndexerRunner -
Übergebener Typ:
Tpwd\KeSearch\Indexer\IndexerRunner
Problem:
Die Extension cyt_eventcalendar (von Cytrus) definiert einen eigenen IndexerRunner, aber die ke_search-Extension (von Tpwd) übergibt stattdessen ihren eigenen IndexerRunner. Dies führt zu einem TypeError, da die Typen nicht kompatibel sind.
2. Fix beschreiben (konkret)¶
Es gibt drei mögliche Lösungsansätze:
A) Typ-Anpassung in EventIndexer (empfohlen)¶
Die Methode customIndexer() sollte so angepasst werden, dass sie den Eltern-Typ (Tpwd\KeSearch\Indexer\IndexerRunner) akzeptiert, falls möglich.
Beispiel:
public function customIndexer(array $indexerConfig, \Tpwd\KeSearch\Indexer\IndexerRunner $indexerObject): void
{
// Logik bleibt gleich
}
Vorteil: Keine Änderungen an ke_search nötig.
Nachteil: Falls Cytrus\CytEventcalendar\KeIndexer\IndexerRunner spezifische Methoden hat, die benötigt werden, muss die Logik angepasst werden.
B) Adapter-Pattern (falls Typen nicht kompatibel sind)¶
Falls Cytrus\CytEventcalendar\KeIndexer\IndexerRunner zwingend benötigt wird, kann ein Adapter erstellt werden, der Tpwd\KeSearch\Indexer\IndexerRunner in den erwarteten Typ umwandelt.
Beispiel:
class KeSearchToCytIndexerAdapter extends \Cytrus\CytEventcalendar\KeIndexer\IndexerRunner
{
private \Tpwd\KeSearch\Indexer\IndexerRunner $keSearchIndexer;
public function __construct(\Tpwd\KeSearch\Indexer\IndexerRunner $keSearchIndexer)
{
$this->keSearchIndexer = $keSearchIndexer;
}
// Delegiere alle Methodenaufrufe an $keSearchIndexer
}
Anpassung in EventIndexer:
public function customIndexer(array $indexerConfig, \Tpwd\KeSearch\Indexer\IndexerRunner $indexerObject): void
{
$adapter = new KeSearchToCytIndexerAdapter($indexerObject);
// Weiter mit $adapter arbeiten
}
C) Dependency Injection (falls möglich)¶
Falls die Extension konfigurierbar ist, könnte der IndexerRunner per Dependency Injection übergeben werden, statt ihn hart zu typisieren.
3. Betroffene TYPO3 Extensions¶
-
Primär:
cyt_eventcalendar(von Cytrus)-
Problem: Falsche Typdeklaration in
EventIndexer::customIndexer().
-
Problem: Falsche Typdeklaration in
-
Sekundär:
ke_search(von Tpwd)-
Problem: Übergibt einen inkompatiblen
IndexerRunner.
-
Problem: Übergibt einen inkompatiblen
4. Confidence (0-100%)¶
✅ 95%
- Die Ursache ist klar (Typ-Inkompatibilität).
- Die Lösungsvorschläge sind technisch fundiert.
- Ein kleiner Unsicherheitsfaktor bleibt, da der genaue Code von
cyt_eventcalendarnicht vorliegt (z. B. obIndexerRunnerspezifische Methoden hat).
Empfohlene Vorgehensweise¶
-
Prüfen, ob
Cytrus\CytEventcalendar\KeIndexer\IndexerRunnerwirklich benötigt wird.- Falls nein: Fix A (Typ-Anpassung) umsetzen.
- Falls ja: Fix B (Adapter) implementieren.
-
Extension-Update prüfen:
- Gibt es eine neuere Version von
cyt_eventcalendar, die das Problem bereits löst?
- Gibt es eine neuere Version von
-
Fallback:
- Falls möglich, die
ke_search-Indexierung fürcyt_eventcalendardeaktivieren und eine alternative Lösung suchen.
- Falls möglich, die
Zusammenfassung:
Der Fehler entsteht durch eine Typ-Inkompatibilität zwischen cyt_eventcalendar und ke_search. Die beste Lösung ist eine Anpassung der Typdeklaration in EventIndexer::customIndexer(). Falls das nicht möglich ist, sollte ein Adapter verwendet werden.
Nichts anzuzeigen