如何将twig变量传递给使用<script src =“...”>包含的js文件

时间:2016-05-17 18:47:49

标签: symfony twig

对于twig模板文件,我想将js内容与HTML内容分开,因此我创建了一个.js文件

&#xA;&#xA;

包含以下内容:

&#xA;&#xA;
  {%if form.vars.data not null%}&#xA;功能downloadInvoice(){&#xA; window.location ='{{path('ziiweb_billing_bill',{'id':form.vars.data.id})}}';&#xA; }&#XA; {%endif%}&#xA;&#xA; function updateTotals(){&#xA; $('#service_download_pdf')。css(“pointer-events”,“none”);&#xA; $('#service_download_pdf')。attr(“disabled”,“true”);&#xA;  
&#xA;&#xA;

我使用此行添加:< / p>&#xA;&#xA;

 &lt; script type =“text / javascript”src =“/ bundles / ziiwebbilling / js / service_form.js”&gt;&lt; / script&gt;&# xA;  
&#xA;&#xA;

但是出现此错误:

&#xA;&#xA;
&#xA;

SyntaxError:期望表达式,得到'%'{%如果form.vars.data不是&#xA; null%}

&#xA;
&#xA;

1 个答案:

答案 0 :(得分:1)

你不能将twig放入你的js文件中。但是要将twig变量传递给js文件,你需要在你的twig文件中有一个脚本,如下所示:

  

twig file

<script>
     //var data = {{ form.vars.data|default('') }};
     // I think it's better to pass the url directly
     {% if form.vars.data is not null %}
          var url = '{{ path('ziiweb_billing_bill', {'id': form.vars.data.id}) }}';
     {% endif %}
</script>

<script type="text/javascript" src="/bundles/ziiwebbilling/js/service_form.js"></script>
  

service_form.js

  if (typeof url === 'undefined') {
      // If the url exists
  }

此外,还有一个公开路由https://github.com/FriendsOfSymfony/FOSJsRoutingBundle

的捆绑包

最后,如果测试有效,则不应定义js函数,但是应该在运行函数时检查