我是Symfony 2的新手。之前我曾在Codeigniter工作过很多次。现在我正在探索资产,我无法理解如何将单个文件添加到已经加载的JS文件堆栈中。
我有一个主页twig文件,其中包含以下内容:
{% javascripts '@BlogBlogBundle/Resources/public/js/vendor/*' output='js/combined.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
现在,如果所有JS文件都在供应商文件夹中,则此工作正常。但是,如果我在一个名为contact的文件夹中有一个JS文件contact.js,我希望它只在联系页面上可见。所以,当我在联系页面twig文件的块体内添加这样的代码时
{% javascripts '@BlogBlogBundle/Resources/public/js/home/*' output='js/home_combined.js' %}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
contact.js将在正文结束之前加载的所有其他js文件之前到来。
在codeigniter中,使用Carabiner库我可以设置我想在所有页面上加载的默认文件,比如jQuery。如果页面有任何特定文件,我可以在该特定控制器内执行此操作。
请告诉我如何在Symfony中做到这一点。
答案 0 :(得分:2)
您可以像这样在资源中添加文件:
{% javascripts
'@YourBundle/Resources/public/js/*'
'@AnotherBundle/Resources/public/js/some.js'
'@YourBundle/Resources/public/vendor/someother.js'
output="filename.js"
%}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
为了拥有您可以使用的预定义资产集合,例如'@js_default',您可以按照my answer here中的建议在assetic.assets
配置中添加这些资产集合。
答案 1 :(得分:1)
要在主文件js文件之后添加contact.js
,您可以执行以下操作。
{% block javascripts %}
{{- parent() -}}
{% javascripts "@AcmeBundle/Resources/public/js/contact.js" %}
<script type="text/javascript" src="{{ asset_url }}" ></script>
{% endjavascripts %}
{% endblock %}