外部 JS 文件中的 Twig 变量
Posted
技术标签:
【中文标题】外部 JS 文件中的 Twig 变量【英文标题】:Twig variable in external JS file 【发布时间】:2016-10-02 21:52:09 【问题描述】:我想将我的 JS 代码外部化,但代码中有 Twig 变量。 你有什么技巧可以让它发挥作用?
team: 'Select your team'|trans
【问题讨论】:
【参考方案1】:当您需要将 twig 变量传递给外部 javascript 文件时,有两种方法
-
在 twig 模板的脚本块内定义变量
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script>
var my_twig_var = % if twig_var is defined %' twig_var '% else %null% endif %
</script>
<script src="scripts/functions.js"></script>
</body>
</html>
对于这种方法,我通常在我的主/基本模板中添加一个名为“javascript”的块
base.twig.html
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
% block body %
% endblock %
% block javascript %
% endblock %
</body>
</html>
page.html.twig
% extends base.twig.html %
% block body%
<h1>Hello World</h1>
% endblock %
% block javascript %
<script>
alert(' twig_var|default('Hello World') ');
</script>
% endblock %
-
借助
data-*
属性将变量传递给javascript
<div data-foo=" foo ">...</div>
$(function()
$(document).on('click', '.button', function(e)
console.log($('div[data-foo]').data('foo'));
);
);
旁注:如果您想将对象或数组传递给twig
,您始终可以使用json_encode
过滤器,它将变量转换为有效的javascript 对象
如果您想控制json_encode
过滤器公开哪些对象属性,您始终可以实现接口Serializable
【讨论】:
谢谢,我会用你的第一种方法,多练习 我更喜欢使用FOSJsRoutingBundle 生成route
与将twig variables
传递到JS
有什么关系?
Path():在给定路由名称和参数的情况下生成 [相对] URL 路径 - url():在给定路由名称和参数的情况下生成绝对 URL。以上是关于外部 JS 文件中的 Twig 变量的主要内容,如果未能解决你的问题,请参考以下文章