如何在TYPO3 Fluid模板中逃避花括号"{"?

Fed*_*TIK 3 typo3 fluid

我有一个混合的HTML/JS模板,当我使用JS数组时,Fluid尝试进行自动替换.

有没有办法在Fluid模板中转义花括号?

UPD:

逃避JS部分的实际工作语法是:

<script type="text/javascript">/*<![CDATA[*/
/*]]>*/
var llKeyOne = '{f:translate(key:"key1")}';
var llKeyTwo = '{f:translate(key:"key2")}';
/*<![CDATA[*/
var myTranslations = {
  llKeyOne: llKeyOne,
  llKeyTwo: llKeyTwo
};
/*]]>*/</script>
Run Code Online (Sandbox Code Playgroud)

Jan*_*ler 6

<![CDATA[]]> 由于上面的解决方案在 TYPO3 v8.7.16 中对我不起作用,所以我想分享我自己的解决方案。我逃避括号的“技巧”是用<f:format>viewhelper 包裹它们。

我的目标是在前端输出它(400 和 swing 是流体变量):

<ul data-animate="{duration:400, easing:'swing'}">
    ...
</ul>
Run Code Online (Sandbox Code Playgroud)


我在 Fluidtemplate 中做到了这一点,效果非常好:

<ul data-animate="<f:format.raw>{</f:format.raw>duration: {data.myfield1}, easing:'{data.myfield2}'<f:format.raw>}</f:format.raw>">
    ...
</ul>
Run Code Online (Sandbox Code Playgroud)


小智 6

CDATA 解决方案在 8.7 中停止工作

我设法在一个大量混合 javascript 和流体的用例中使用别名解决了这个问题。{l} 代表左(左大括号),{r} 代表右(右大括号):

<f:alias map="{l: '{', r: '}'}">
    var alter = {};
    <f:for each="{alterDB}" as="a">
        if (!alter[{a.einsatz}]) { alter[{a.einsatz}] = {}; }
        alter[{a.einsatz}][alter[{a.einsatz}].length] = {l} label: "{a.bezeichnung} ({a.kuerzel})", value: {a.uid} {r};
    </f:for>
</f:alias>
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试使用

<![CDATA[...]]>
Run Code Online (Sandbox Code Playgroud)

JS代码周围的标签.