TYPO3 v11.5.41中如何向FLUIDTEMPLATE传递嵌套变量?
在TYPO3 v11.5.x中向Fluid传递嵌套变量的正确方式
直接在FLUIDTEMPLATE.variables下嵌套TypoScript对象的写法无法生效,因为该配置下的每个变量默认会被解析为内容对象(如TEXT/COA),而非可被Fluid识别的嵌套数组。以下是两种可行的解决方法:
方法1:使用ARRAY内容对象构建嵌套结构
通过ARRAY类型的内容对象,将嵌套的属性封装成数组传递给Fluid:
page { 10 = FLUIDTEMPLATE 10 { variables { # 用ARRAY定义嵌套变量 validNested = ARRAY validNested { headline = TEXT headline.value = Foo subTitle = TEXT subTitle.value = 这是嵌套的副标题 } } } }
在Fluid模板中即可通过点语法访问:
<h1>{validNested.headline}</h1> <p>{validNested.subTitle}</p>
方法2:结合stdWrap.cObject实现嵌套
如果需要对嵌套结构做更灵活的处理(比如动态生成内容),可以用stdWrap.cObject来封装数组:
page { 10 = FLUIDTEMPLATE 10 { variables { dynamicNested = TEXT dynamicNested { stdWrap.cObject = ARRAY stdWrap.cObject { title = TEXT title.value = 动态生成的标题 content = TEXT content.value = 这是嵌套的内容文本 } } } } }
Fluid中调用方式:
<h2>{dynamicNested.title}</h2> <p>{dynamicNested.content}</p>
为什么原写法失效?
你之前尝试的doesnotwork { headline = TEXT... }写法,TypoScript会将doesnotwork视为一个未正确配置的内容对象,而非数组结构,因此Fluid无法识别其中的headline属性。必须通过ARRAY明确声明这是一个嵌套数组,才能让TypoScript正确传递给Fluid。
内容的提问来源于stack exchange,提问作者cweiske
相关产品推荐
相关产品推荐

