首页 > 解决方案 > TYPO3:在 JavaScript 中使用 Fluid 变量?

问题描述

我用模板写了一个 TYPO3 扩展。在该模板中,我在<script>标签之间有一个 JavaScript 函数。刚才我注意到整个模板是由 Fluid 渲染的(对吗?)。因此,它应该在我的标签function (){...}中使用我的 JavaScript 函数的大括号 ( ) 做一些事情(或者更确切地说不应该,因为它是 javascript 并且不应该被 Fluid 考虑) 。<script>正确的?情况似乎并非如此,因为我的代码一直有效。我想知道为什么它总是有效?TYPO3 是否识别脚本标签并忽略其中的所有内容?顺便说一下,这是 TYPO3 6.2。

现在更重要的问题是:如何在我的<script>标签之间的 javascript 函数中访问我通过控制器分配给视图的关联数组?我在我的javascript函数中尝试了类似的东西var x = {test_variable},但这不起作用。这暗示了 JavaScript 中的大括号不会被 Fluid 解释。但我找到了声称它们是的消息来源。然而,在我的情况下,Fluid 似乎忽略了大括号。这解释了为什么我的 javascript 一直有效。我很困惑,因为我无法解释所有这些事情。无论如何,那么如何在我的 JavaScript 中访问分配给控制器中视图的变量?我希望我的意思很清楚。

标签: typo3fluidtypo3-6.2.x

解决方案


简而言之,得到答案。这似乎是 TYPO3 中的缓存/渲染错误。一个有效的解决方法是围绕导致条件问题的代码。

所以

...
var x = {test_variable}
...

可以写成

<f:if condition="1">
    ...
    var x = {test_variable}
    ...
</f:if>

感谢@Robert 对Bernd Wilke 的回答
的研究和评论 (这个错误仍然存​​在于 TYPO3 v9.5.23 中。未在 V10.4 中测试)


推荐阅读