我通常将我的JS和CSS Assetic资产放在DefaultBundle中,但我认为放置它们的最佳位置是app / Resources / public /(js | css)文件夹。
另外,要引用我们使用的资产:
{% javascripts filter="" output="js/core.js" debug=true
"@DefaultBundle/Resources/public/js/jquery-1.6.2.js" %}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
如何在app / Resources / public /...中添加引用共享资源(如jQuery和CSS重置样式表)
答案 0 :(得分:27)
你也可以使用它:
{% stylesheets '../app/Resources/public/css/*' %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
答案 1 :(得分:24)
是的,不将库放在Bundle
中是个不错的选择见这里:http://symfony.com/doc/current/cookbook/bundles/best_practices.html#vendors
捆绑包不应嵌入用JavaScript,CSS或任何其他语言编写的第三方库。
我建议你将jquery和重置文件放在:app/Resources/public/js/jquery.min.js
之下,并用以下内容更改你的代码:
{% javascripts filter="" output="js/core.js" debug=true
"../app/Resources/public/js/jquery-1.6.2.js" %}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
我希望这对你有用。
编辑:编辑后的答案就像https://stackoverflow.com/a/9237004/505836一样,感谢大卫。
答案 2 :(得分:8)
我的解决方案与David的解决方案几乎相同,但是使用%kernel.root_dir%
而不是硬编码app
文件夹(尽管我怀疑很多人更改了此文件夹的名称),例如:
{%- javascripts output='compiled/main.js'
'%kernel.root_dir%/Resources/public/js/jquery-1.10.2.min.js'
'%kernel.root_dir%/Resources/public/js/underscore-1.5.2.min.js'
'@MyOwnBundle/Resources/public/js/default.js'
-%}
<script src='{{ asset_url }}'></script>
{%- endjavascripts %}
如果第三方库引用他们自己的资产(例如,通常是从.css文件引用的img
子文件夹中的图像),通常就足以在服务器上创建相应的符号链接,例如: ln -s .../app/Resources/public/img .../web/img
或类似的东西。或者当然使用cssrewrite过滤器 - 但要注意它的警告。
(另请注意,我不使用type="<mime-type>"
属性,因为无论如何都在HTTP头中提供了文件的内容类型。)
答案 3 :(得分:2)
您可以../app/Resources/public/css/
替换public/css/
。 Javascript文件夹也一样。
{% stylesheets filter='less' output='css/core' 'public/css/*' %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
{% javascripts "public/js/*" %}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
此处/web/public
文件夹的所有文件都会自动加载。