Projekt

Allgemein

Profil

Aktionen

Bug #73

offen

[Bugsink] TypeError: Cytrus\CytEventcalendar\KeIndexer\EventIndexer::customIndexer(): Argument #2 ($indexerObject) must be of type Cytrus\CytEventcalendar\KeIn…

Von Bug Sink vor etwa 1 Monat hinzugefügt.

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

0%

Geschätzter Aufwand:

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().
  • Sekundär: ke_search (von Tpwd)
    • Problem: Übergibt einen inkompatiblen IndexerRunner.

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_eventcalendar nicht vorliegt (z. B. ob IndexerRunner spezifische Methoden hat).

Empfohlene Vorgehensweise

  1. Prüfen, ob Cytrus\CytEventcalendar\KeIndexer\IndexerRunner wirklich benötigt wird.
    • Falls nein: Fix A (Typ-Anpassung) umsetzen.
    • Falls ja: Fix B (Adapter) implementieren.
  2. Extension-Update prüfen:
    • Gibt es eine neuere Version von cyt_eventcalendar, die das Problem bereits löst?
  3. Fallback:
    • Falls möglich, die ke_search-Indexierung für cyt_eventcalendar deaktivieren und eine alternative Lösung suchen.

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

Aktionen

Auch abrufbar als: Atom PDF