如何将JS变量resortuid拼接进URL并适配TYPO3 fluid模板
TYPO3 Fluid模板适配方案
失效原因
TYPO3 Fluid模板引擎默认会将代码中的{、}识别为模板标签解析,同时会自动转义特殊字符,直接写入的JavaScript动态拼接逻辑会被误解析,导致代码无法正常运行。
适配方法
根据你的使用场景选择对应方案即可:
- 场景1:
resortuid已经从PHP侧赋值到Fluid模板变量,JS代码内嵌在Fluid模板中
给script标签添加data-namespace-typo3-fluid="true"属性,告诉Fluid当前script块内的普通大括号不需要解析,仅识别Fluid标签,直接在拼接URL时调用变量即可,示例代码如下:
<script data-namespace-typo3-fluid="true"> var resortuid = '{resortuid}'; var settings = { "url": "https://aaa.aa/" + resortuid + "_simple.json", "method": "GET", "timeout": 0, }; </script>
如果需要兼容旧版TYPO3,也可以用<f:format.raw>包裹整段JavaScript代码,避免Fluid转义内容。
- 场景2:JavaScript代码存放在独立的外部JS文件中
先在Fluid模板中声明全局变量传递resortuid,再在外部JS中调用即可:
Fluid模板内代码:
<script data-namespace-typo3-fluid="true"> // 声明全局变量给外部JS调用 window.resortuid = '{resortuid}'; </script>
外部JS文件内代码:
var settings = { "url": "https://aaa.aa/" + window.resortuid + "_simple.json", "method": "GET", "timeout": 0, };
内容的提问来源于stack exchange,提问作者typo3job
相关产品推荐
相关产品推荐

