TYPO3模板Fluid代码嵌入Flexform数据至data属性失败求助
我来帮你解决这个Fluid模板的问题!你遇到的情况是因为Fluid默认不会解析单引号包裹的属性值里的变量,所以直接把{data.pi_flexform.items}塞进去是不会生效的。下面给你几种靠谱的解决办法:
解决方案1:字符串拼接+原生输出
利用Fluid的字符串连接符~把JSON结构和变量拼接起来,再用f:format.raw确保输出内容不被转义,这样就能生成合法的JSON格式:
<div id="owl-main" data-owl-carousel='{f:format.raw(value: '{"items":' ~ data.pi_flexform.items ~ '}')}'>
解决方案2:用f:format.json生成标准JSON
这是更简洁稳妥的方法,利用Fluid内置的f:format.json视图助手,直接把包含变量的数组转成合法的JSON字符串,它会自动处理引号转义问题:
<div id="owl-main" data-owl-carousel="{f:format.json(value: {items: data.pi_flexform.items})}">
解决方案3:手动转义引号(不推荐但可用)
把data属性用双引号包裹,同时转义JSON内部的双引号,让Fluid能正确解析变量:
<div id="owl-main" data-owl-carousel="{\"items\":{data.pi_flexform.items}}">
另外,建议先验证一下{data.pi_flexform.items}是否能输出正确的数值(比如你需要的2),可以在模板里临时加一行调试代码:
<!-- 调试用,确认变量值 --> <p>当前items值:{data.pi_flexform.items}</p>
如果这个输出是正确的,那上面的方法肯定能生效。
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

