@Eric Harrer
Gemini hat mir geholfen Deine Erklärung noch besser zu verstehen :-)
Sofern dessen Aussagen richtig sind, können sie vielleicht auch anderen beim Durchblicken helfen.:
Die Werte kommen nicht aus dem Debug-Array, sondern werden live durch Methoden-Aufrufe auf den PHP-Objekten erzeugt, die im Debugger nur als [object] angezeigt werden.
Die "Magie" von Fluid: Mehr als nur Arrays
Der <f:debug>-Befehl zeigt dir die gespeicherten Eigenschaften (Properties) der Objekte. Dein Fluid-Code greift aber nicht nur auf diese gespeicherten Eigenschaften zu, sondern kann auch Methoden (Funktionen) dieser Objekte aufrufen.
Wenn du in Fluid {meinObjekt.tollerWert} schreibst, macht Fluid im Hintergrund Folgendes:
Es sucht nach einer öffentlichen Eigenschaft namens tollerWert im Objekt.
Wenn es die nicht findet, sucht es nach einer öffentlichen Methode namens getTollerWert() und führt diese aus.
Genau das passiert hier.
Dein Code, Schritt für Schritt übersetzt
Schauen wir uns deinen funktionierenden Code an:
{scene_asset_root_b.0.originalFile.parentFolder.publicUrl}
Fluid übersetzt das in eine Kette von PHP-Methodenaufrufen:
{scene_asset_root_b}
Das ist die Variable aus dem content-blocks-Prozessor. Sie enthält ein Array mit einem FileReference-Objekt.
.0
Greift auf das erste Element des Arrays zu. Das Ergebnis ist das FileReference-Objekt, das du im Debugger siehst.
.originalFile
Hier passiert die Magie: Fluid ruft die Methode getOriginalFile() auf dem FileReference-Objekt auf. Diese Methode gibt ein File-Objekt zurück. Dieses File-Objekt siehst du im Debugger nur als Verweis ("see above"), weil es zu viele Informationen wären, es komplett darzustellen.
.parentFolder
Auf dem File-Objekt, das wir gerade bekommen haben, ruft Fluid jetzt die Methode getParentFolder() auf. Diese Methode ermittelt den übergeordneten Ordner und gibt ein Folder-Objekt zurück.
.publicUrl
Auf dem Folder-Objekt ruft Fluid schließlich die Methode getPublicUrl() auf. Diese Methode erzeugt den finalen, öffentlichen Pfad (z.B. /fileadmin/...), den du im Frontend siehst.
Zusammenfassend: Du siehst die Werte nicht direkt im Debugger, weil sie nicht als simple Text-Eigenschaften gespeichert sind. Stattdessen sind sie das Ergebnis einer Kette von Funktionsaufrufen, die Fluid für dich im Hintergrund ausführt. Das ist ein sehr mächtiges Kernkonzept von Fluid und TYPO3. Dein Code ist also nicht nur korrekt, er ist auch der empfohlene Standardweg, um an diese Information zu kommen.
Hier sind die wichtigsten Quellen, die du für solche Fälle brauchst:
- The Fluid Guide (Das "Wie?")
Hier wird die grundlegende Funktionsweise der Fluid-Templating-Engine erklärt. Der für dich wichtigste Teil ist die Erklärung, wie Fluid auf Variablen und Objekte zugreift.
Fluid Syntax: Variables: Auf dieser Seite wird erklärt, dass {object.property} nicht nur eine Eigenschaft sucht, sondern auch Methoden wie getProperty() aufruft. Das ist das Kernkonzept, das du gesucht hast.
- Die TYPO3 Core API Referenz (Das "Was?")
Hier findest du heraus, welche Methoden und Eigenschaften ein bestimmtes Objekt (wie FileReference oder Folder) überhaupt hat.
api.typo3.org: Das ist die offizielle API-Dokumentation für den PHP-Code von TYPO3.
Praktischer Tipp: Nutze <f:debug> in Fluid, um den Klassennamen eines Objekts herauszufinden (z.B. TYPO3\CMS\Core\Resource\FileReference). Suche dann auf api.typo3.org nach dieser Klasse. Dort findest du eine Liste aller öffentlichen Methoden (wie getOriginalFile(), getParentFolder(), getPublicUrl()), die du in Fluid verwenden kannst.
- DataProcessing & FAL (Das "Woher?")
Diese Dokumentation erklärt, wie die Daten überhaupt erst in dein Fluid-Template kommen.
File Abstraction Layer (FAL): Erklärt das Konzept, wie TYPO3 mit Dateien und Ordnern umgeht.
Core DataProcessors: Listet die Standard-DataProcessors (wie den FilesProcessor) auf und erklärt deren Konfiguration.
- Die ViewHelper-Referenz (Die "Werkzeuge")
Hier findest du alle Standard-Werkzeuge (<f:if>, <f:for>, <f:uri.resource> etc.), die dir in Fluid zur Verfügung stehen.
ViewHelper Reference: Eine komplette Liste aller verfügbaren Fluid-ViewHelpers und deren Parameter.
Zusammenfassend: Ein typischer Workflow ist:
Mit <f:debug> den Klassennamen eines Objekts im Template herausfinden.
In der API-Referenz nach der Klasse suchen, um zu sehen, welche Methoden (Getter) sie hat.
In der Fluid-Dokumentation nachschlagen, wie die Syntax für den Zugriff funktioniert.
Bei Bedarf in der ViewHelper-Referenz nach passenden Werkzeugen suchen.