Symfony2-如何使用twig中的{%javascripts%}引用web目录中的文件?
我正在使用像amcharts这样的库,它们有许多js文件 我把amcharts放到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下包
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 %}