Symfony2-如何使用twig中的{%javascripts%}引用web目录中的文件?

Symfony2-如何使用twig中的{%javascripts%}引用web目录中的文件?,symfony,assets,assetic,Symfony,Assets,Assetic,我正在使用像amcharts这样的库,它们有许多js文件 我把amcharts放到web/js/amcharts中,然后 {%block javascripts%} {{parent()}} {%javascripts'/js/amcharts/amcharts.js%} {%endjavascripts%} {%endblock%} 但是我得到了[exception]500 |内部服务器错误|运行时异常 [消息]源文件“/amcharts/amcharts.js”不存在。编辑 要在web下包

我正在使用像amcharts这样的库,它们有许多js文件

我把amcharts放到
web/js/amcharts
中,然后

{%block javascripts%}
{{parent()}}
{%javascripts'/js/amcharts/amcharts.js%}
{%endjavascripts%}
{%endblock%}
但是我得到了
[exception]500 |内部服务器错误|运行时异常
[消息]源文件“/amcharts/amcharts.js”不存在。

编辑

要在
web
下包含文件,请尝试从路径中删除正斜杠,即

{% javascripts  'js/amcharts/amcharts.js' %}
                 ^ remove / here

假设您已将名为xyz.js的javascripts源放在“js/”文件夹中,则您必须通过“app/resources/base.html”文件获取此javascripts,如下所示:

{% block javascripts %}
     <script src="{{ asset('js/xyz.js') }}" type="text/javascript"> </script>
{% endblock %}
它会自动获取您的Java脚本。即使您想修改该特定子分支的javascripts代码,您也必须编写如下代码:

{% extends '::base.html.twig' %} 

    {% block display %}
     // Your display content here
    {% endblockdisplay %}

    {% block javascripts %}
       {{ parent() }}
        // Your changing code here
    {% endblockjavascripts %}

如果只引用单个css/js文件,则可以使用
asset()
函数,而不是使用
javascripts
创建资产集合。但请记住,任何过滤器都不会以这种方式处理资产。但是,
javascripts
只接受
@AcmeBundle
样式路径并不是真的。@nifr我一直无法让
javascripts
处理
web
下的文件。如果可能的话,我实际上更喜欢它。
{%javascripts%}
标记只不过是配置一个新的资产集合,比如添加一个配置指令
assetic.assets..(inputs | filters | output)
。它只是将输出名称作为
asset\u url
变量返回给具有正确当前路径的twig。您完全可以将
web
文件夹中的文件添加到资产集合的输入数组中。此外,还明确指出,不建议将javascript/css库放入捆绑包中<代码>捆绑包不应嵌入用JavaScript、CSS或任何其他语言编写的第三方库@nifr你说得对!我能够让它在没有初始正斜杠的情况下工作
{% extends '::base.html.twig' %} 
  {% block display %}
  {% endblockdisplay %}
{% extends '::base.html.twig' %} 

    {% block display %}
     // Your display content here
    {% endblockdisplay %}

    {% block javascripts %}
       {{ parent() }}
        // Your changing code here
    {% endblockjavascripts %}