Zum Inhalt springen

Parameter aus cObject an neues Fluid-Template als Variable übergeben

Erstellt am 10. November 2020 · 4 Antworten · letzte Antwort am 11. November 2020

Tags: Fluid, TYPO3 10, Frage

Kesandal ·

Hallo zusammen,

ich habe in meinem Template ein cObject an welches ich den Parameter colorStyle übergebe:

<f:cObject typoscriptObjectPath="lib.testElement" data="{colPos: '0', colorStyle: 'blue'}" />

lib.testElement verwendet ein FLUIDTEMPLATE an das ich colorStyle als Variable übergeben möchte.
Leider klappt dies nicht und meine Variable bleibt leer. Die übergebenen Parameter schaue ich mir mit <f:debug>{_all}</f:debug> an.

Mein lib.test sieht wie folgt aus:

lib.testElement < lib.dynamicContent

lib.testElement {
    20.renderObj = FLUIDTEMPLATE
    20.renderObj {
        templateName = TestTemplate

        templateRootPaths {
            10 = {$tmpPath}/Templates
        }

        variables {
            header = TEXT
            header.field = header

            colorStyle = {colorStyle}
            
	    helloWorld = TEXT
            helloWorld.value = Hello World
        }
    }
}

Kann mir bitte jemand von Euch weiterhelfen wie ich die Variable an das Template übergeben bekomme?

Vielen Dank

Julian.​Hofmann ·

Die an ein cObject übergebenen Werte aus "data" werden als Felder interpretiert.

D.h. für Dein 'colorStyle' müsstest Du so zugreifen:

lib.testElement.20.renderObj.variables.colorStyle = TEXT
lib.testElement.20.renderObj.variables.colorStyle.field = colorStyle
Kesandal ·

Hallo @Julian.Hoffmann,

danke für Deine Antwort.

Leider scheint es dennoch nicht zu klappen.

In meinem Template Haupttemplate Default.html habe ich nun:

<f:cObject typoscriptObjectPath="lib.testElement" data="{colPos: '0', colorStyle: 'test123}" />

Deinen Code

lib.testElement.20.renderObj.variables.colorStyle = TEXT
lib.testElement.20.renderObj.variables.colorStyle.field = colorStyle

habe ich direkt unterhalb von meinem Code eingefügt.
Im TypoScript Object Browser taucht es auch korrekt auf.

Im Template TestTemplate.html sehe ich im <f:debug>{_all}</f:debug> immer noch
colorStyle => '' (0 chars)

Hast Du noch einen Tipp für mich?

Vielen Dank.

Julian.​Hofmann ·

Ja, die Upload-funktion ist seit Jahren kaputt - interessiert bei Mittwald (dem Betreiber des Forums) leider kein Schwein...
Hatte schon diverse Kontakte und Gespräche dazu. Leider reicht's nicht mal dazu, wenigstens das kaputte Upload-Feld auszublenden. Ist schade, ist aber leider so :-(

Könnte noch sein, dass die Daten nicht "passend" ins FLUIDTEMPLATE-Objekt reinkommen. eigentlich ziemlich sicher: Du hast das Objekt ja als renderObj für irgendwelche Daten - und diese sind via '.field' einsetzbar.
Evtl. könnte ein Umweg über ein LOAD_REGISTER (https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/ContentObjects/LoadRegister/Index.html) tun:

lib.testElement {
10 = LOAD_REGISTER
10 {
colorStyle = TEXT
colorStyle.field = colorStyle
}
// ...
20.renderObj.variables.colorStyle = {REGISTER:colorStyle}
}