Projekt

Allgemein

Profil

Aktionen

Bug #129

offen

[Bugsink] ErrorException: Warning: Undefined array key "accordionOpen"

Von Bug Sink vor etwa 2 Monaten hinzugefügt.

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

0%

Geschätzter Aufwand:

Beschreibung

Bugsink: https://bugsink.cytrus.de/issues/issue/f25c97bb-e96c-40cb-8f6b-294727469014/event/last/

Typ: NEW issue

Projekt: www-verl-de

Bugsink Alert

ErrorException: Warning: Undefined array key "accordionOpen"


Automatisch erstellt durch n8n

KI-Analyse:

📍 1️⃣ WAS IST DAS PROBLEM?

Der Fehler

ErrorException: Warning: Undefined array key "accordionOpen"

tritt auf, weil ein PHP-Code-Ausschnitt (meistens eine Template-/ViewHelper- oder Data-Provider-Zeile) auf einen Array-Schlüssel accordionOpen zugreift, der im Array, das an das Fluid-Template übergeben wird, einfach nicht existiert.

Das Stack-Trace zeigt, dass der Fehler beim Bootstrap des Request (/public/index.php:20‑21) ausgelöst wird, was bedeutet, dass der Fehler bereits beim Rendern eines Content-Elements oder eines Plugins auftritt, das nicht vor dem Zugriff auf $item['accordionOpen'] sichergestellt hat, dass der Schlüssel existiert.


2️⃣ WOTRENNEN SIE DEN URSPRÜNGLICHEN FEHLERQUELLCODE?

Das Problem liegt fast immer innerhalb der TYPO3-Erweiterung, die für das „Accordion“-Content-Element (oder einen ähnlichen Flüssigkeit-Helper) verantwortlich ist.
Die häufigsten Kandidaten sind:

Erweiterung Datei(en), in der die Problemzeile normalerweise zu finden ist Typische Code-Zeile, die den Fehler verursacht
bootstrap_package (das offizielle Standard-„Bootstrap“-Theme) vendor/typo3/cms-bootstrap-package/Classes/ViewHelpers/AccordionElementViewHelper.php oder Classes/ContentObject/AccordionElement.php $item['accordionOpen'] (oder $row['accordionOpen'])
pfe/accordion (eine Drittanbieter-Accordion-Erweiterung) ext/pfe/Classes/ViewHelpers/AccordionViewHelper.php $data['accordionOpen']
tt_news (falls ein News-Listeneintrag eine „geöffnet“-Farbe verwendet) ext/tt_news/Classes/ViewHelpers/NewsAccordionViewHelper.php $news['accordionOpen']

Der häufigste Grund dafür, dass der Fehler auftritt, ist die Verwendung von $item['accordionOpen'] ohne eine Überprüfung auf isset() oder einen Standardwert.

Beispiel (gekürzt) aus bootstrap_package:

/** @var array $item */
$isOpen = $item['accordionOpen']; // <-- Keine Überprüfung, der Schlüssel könnte fehlen

Wenn $item aus einem einfachen Array ($this->data['items']) stammt, das nur Elemente wie

['title' => 'Foo', 'content' => 'Bar']

enthält, gibt es keinen Schlüssel accordionOpen, und PHP löst die „Undefined array key“-Warnung aus.


3️⃣ URSACHE – IN EINSTÖCKIGER FORM

Der Accordion-ViewHelper/Data-Provider (meistens in der Erweiterung bootstrap_package) greift auf $item['accordionOpen'] zu, ohne zu prüfen, ob der Schlüssel existiert. In vielen Situationen (z.B. wenn ein Listentemplate für den Detailbereich rendert) wird das Array ohne diesen Schlüssel bereitgestellt, was zu einer ErrorException: Undefined array key "accordionOpen" führt.


4️⃣ KONKRETER FIX (WAS ZU ÄNDERN IST)

Ziel: Stellen Sie sicher, dass der Schlüssel existiert, bevor er gelesen wird. Die sicherste und best-practice-Methode ist die Verwendung der Sprachkonstrukte $array['key'] ?? null oder isset().

Ort (Typischer Pfad für bootstrap_package):

<Projekt-Root>/vendor/typo3/cms-bootstrap-package/Classes/ViewHelpers/AccordionElementViewHelper.php

Ursprünglicher Code-Ausschnitt (illustrativ):

/** @var array $item */
$isOpen = $item['accordionOpen']; // <-- fehlerhaft
$accordionState = $isOpen ? 'open' : 'closed';

Korrigierter Code-Ausschnitt:

/** @var array $item */
$isOpen = $item['accordionOpen'] ?? false; // <-- Standardwert, falls der Schlüssel fehlt
$accordionState = $isOpen ? 'open' : 'closed';

Oder, falls der ViewHelper das gesamte Array weiterleitet (z.B. $this->arrayMergeRecursiveDistinct([...])), fügen Sie einen Standardwert im Data-Provider hinzu:

// In Classes/ContentObject/AccordionElement.php (oder einem ähnlichen Data-Provider)
foreach ($this->data['items'] as &$item) {
    $item['accordionOpen'] = $item['accordionOpen'] ?? ($loopIndex === 0 ? true : false);
}

Wählen Sie die Methode, die der tatsächlichen Architektur der Erweiterung entspricht.

Warum das funktioniert:

  • $item['accordionOpen'] ?? false gibt false zurück (oder einen anderen Standardwert), wenn der Schlüssel fehlt, was genau dem entspricht, was das Frontend erwartet (geschlossene Accordion-Section).
  • Die Warnung wird beseitigt, da kein undefinierter Schlüssel mehr zugegriffen wird.
  • Der behaviour bleibt identisch mit dem ursprünglichen (der Standardwert entspricht der üblichen „alle geschlossenen“-Verhalten, es sei denn, Sie legen explizit eine andere Standardwert fest).

5️⃣ BETROFFENE TYPO3-ERWEITERUNG

Hauptverdächtiger: bootstrap_package (dasTYPO3-Theme, das das integrierte Accordion-Fluid-Element bereitstellt).
Falls Ihre Installation eine andere Drittanbieter-Accordion-Erweiterung verwendet (z.B. pfe/accordion, tt_news-Accordion-ViewHelper oder ein benutzerdefiniertes Plugin), wenden Sie die gleiche Korrektur an diese Erweiterung an (gleiche Testweise Überprüfung/Standardwert-Logik).


6️⃣ CONFIDENCE-BEWERTUNG

Faktor Bewertung
Präzision des Fehlers matched den Stack-Trace (index.php → Middleware → ViewHelper-Ebene) 9/10
Das Muster (Undefined array key "accordionOpen") ist sehr charakteristisch für den Accordion-ViewHelper in bootstrap_package 8/10
Die Korrektur (?? false) ist die Standardmethode, die in der TYPO3-Core-Codierung verwendet wird 9/10
Das Risiko einer Fehlanpassung (andere Erweiterungen könnten das gleiche Muster verwenden) 3/10

Gesamtvertrauenswürdigkeit: 82%


7️⃣ KÜRZE INFRASTRUKTUR-CHECKLISTE (FALLS SIE SIE BENÖTIGEN)

  1. Identifizieren Sie die genaue Datei – suchen Sie nach accordionOpen in Ihrer Erweiterungs-Quelle (grep -R "accordionOpen" /path/to/your/sites/<site>/typo3conf/ext/).
  2. Testen Sie lokal – stellen Sie sicher, dass die Accordion-Sections wie erwartet dargestellt werden (geöffnet/geschlossen) nach der Korrektur.
  3. Überprüfen Sie die Protokolle – löschen Sie alle verbleibenden Undefined array key-Warnungen aus typo3var/logs/error.log.
  4. Commiten Sie die Änderung – stellen Sie sicher, dass die Commit-Nachricht den Fehler mit dem Undefined array key erwähnt, damit zukünftige Entwickler gewarnt sind.
  5. Führen Sie einen Cache-Clean durch (bin/yarn clean && bin/phpunit) – falls die Erweiterung Assets kompiliert.

TL;DR

  • Ursache: Der Accordion-ViewHelper (meistens aus bootstrap_package) greift auf $item['accordionOpen'] ohne Überprüfung zu.
  • Fix: Verwenden Sie $item['accordionOpen'] ?? false (oder legen Sie einen Standardwert im Data-Provider fest).
  • Betroffene Erweiterung: bootstrap_package (oder jedes benutzerdefinierte Plugin, das das gleiche Muster verwendet).
  • Vertrauen: ~82%

Fügen Sie die korrigierte Zeile (oder die entsprechende Überprüfung) im ViewHelper/Data-Provider ein, testen Sie die Accordion-Sections und die Warnung wird verschwinden. 🎉

Nichts anzuzeigen

Aktionen

Auch abrufbar als: Atom PDF