TYPO3 将 Fluid 变量值传递给 Javascript
TYPO3 pass Fluid variable value to the Javascript
在流体模板中,我有一个流体变量,我想在我的 JavaScript 代码中使用它的值。
我在流体模板中使用 JavaScript。
我的代码:
<!-- value I would use further in my javascript -->
<h1 id="product-model">{product.model}</h1>
<!-- Javascript code (in the same file) -->
<script>
<![CDATA[
function printProductWindow() {
document.title = document.getElementById("product");
window.print();
}
]]>
</script>
提前致谢!
丹尼斯
你的元素id有误:
document.title = document.getElementById("product-model");
因为你定义为id="product-model"
.
或者,如果您的 JavaScript 在 FluidTemplate 中,您也可以在那里设置值:
<script>
<![CDATA[
function printProductWindow() {
document.title = "]]>{product.model}<![CDATA[";
window.print();
}
]]>
</script>
但我要警告你:通过 JavaScript 更改标题不是一个好的做法。
查看新闻扩展 here 中的 TitleTagViewHelper,了解如何解决此问题。
你也可以在 js 中使用流体变量,但大多数时候你需要使用像 <f:format.htmlspecialchars>
.
这样的格式视图帮助器
<script>
<![CDATA[
function printProductWindow() {
document.title = '<f:format.htmlspecialchars>{product.model}</f:format.htmlspecialchars>';
window.print();
}
]]>
</script>
<script>
function printProductWindow() {
document.title = <f:format.raw>{product.model}<f:format.raw>;
window.print();
}
</script>
For TYPO3 8.7.
https://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ThingsToKnow/JsAndInline.html
<f:format.cdata>
<script type="text/javascript">
var myLayout;
$(document).ready(function() {
myLayout = $('body').layout({
north__size: 27,
north__initClosed: false,
north__initHidden: false,
center__maskContents: true // IMPORTANT - enable iframe masking
});
});
</script>
</f:format.cdata>
另一种方式是:
<!-- value I would use further in my javascript -->
<h1>{product.model}</h1>
<!-- Javascript code (in the same file) -->
<script>
function printProductWindow() {
<f:format.raw>
document.title = {product.model};
window.print();
</f:format.raw>
}
</script>
将 Viewhelper 放在最接近的花括号中,它应该输出一个变量以获得正确的流体检测。
在流体模板中,我有一个流体变量,我想在我的 JavaScript 代码中使用它的值。
我在流体模板中使用 JavaScript。
我的代码:
<!-- value I would use further in my javascript -->
<h1 id="product-model">{product.model}</h1>
<!-- Javascript code (in the same file) -->
<script>
<![CDATA[
function printProductWindow() {
document.title = document.getElementById("product");
window.print();
}
]]>
</script>
提前致谢! 丹尼斯
你的元素id有误:
document.title = document.getElementById("product-model");
因为你定义为id="product-model"
.
或者,如果您的 JavaScript 在 FluidTemplate 中,您也可以在那里设置值:
<script>
<![CDATA[
function printProductWindow() {
document.title = "]]>{product.model}<![CDATA[";
window.print();
}
]]>
</script>
但我要警告你:通过 JavaScript 更改标题不是一个好的做法。
查看新闻扩展 here 中的 TitleTagViewHelper,了解如何解决此问题。
你也可以在 js 中使用流体变量,但大多数时候你需要使用像 <f:format.htmlspecialchars>
.
<script>
<![CDATA[
function printProductWindow() {
document.title = '<f:format.htmlspecialchars>{product.model}</f:format.htmlspecialchars>';
window.print();
}
]]>
</script>
<script>
function printProductWindow() {
document.title = <f:format.raw>{product.model}<f:format.raw>;
window.print();
}
</script>
For TYPO3 8.7.
https://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ThingsToKnow/JsAndInline.html
<f:format.cdata>
<script type="text/javascript">
var myLayout;
$(document).ready(function() {
myLayout = $('body').layout({
north__size: 27,
north__initClosed: false,
north__initHidden: false,
center__maskContents: true // IMPORTANT - enable iframe masking
});
});
</script>
</f:format.cdata>
另一种方式是:
<!-- value I would use further in my javascript -->
<h1>{product.model}</h1>
<!-- Javascript code (in the same file) -->
<script>
function printProductWindow() {
<f:format.raw>
document.title = {product.model};
window.print();
</f:format.raw>
}
</script>
将 Viewhelper