我想全局配置assetic转储我的JS文件的输出目录。目前,他们总是前往web/js/*
。我想将其更改为web/js/compiled/*
。
可以在每个文件级别指定:http://symfony.com/doc/2.0/cookbook/assetic/asset_management.html#dumping-asset-files
似乎找不到在我的Symfony应用程序中全局设置此方法的方法。我缺少任何配置参数?
更新
找到名为write_to
的资产配置参数。在config.yml
中设置此选项会导致命令行assetic:dump
将文件转储到新目录,但在twig文件中,asset_url
var仍然指向原始路径。
答案 0 :(得分:17)
您应该使用 write_to 属性。
在我的配置例程中我使用
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: %kernel.debug%
read_from: %kernel.root_dir%/Resources/views/
write_to: %kernel.root_dir%/../web/static/
输出字符串从 write_to 开始
例如
{% javascripts filter="closure" output='js/main.js'
...
{% stylesheets filter='compass,?cssrewrite'
'default/static/sass/screen.scss'
output='css/screen.css'
%}
两者将分别放在 /web/static/js/main.js 中 和 /web/static/css/screen.css
assets_base_urls用于指定用于从http和ssl(https)页面引用的资源的基本URL。
assets_base_urls
也使用<{p> !! {% images %}
作为output
值之前的根,但{% images %}
不考虑write_to
在渲染html时(仅在转储时),最好不要使用write_to
并仅依赖output
值。 有关my other post on stackoverflow和this post on AsseticBundle's github 的更多信息。
答案 1 :(得分:4)
您可以将树枝的资产路径(assets_base_urls
)设置为静态路径,而不是使用相对路径。在config.yml文件中,它看起来类似于:
framework:
templating:
engines: ['twig']
assets_base_urls:
http: [http://path.to-cdn.com]
这将影响资产和asset_url
方法的asset()
。后者可能是也可能不是。
答案 2 :(得分:2)
This GitHub issue comment帮我解决了这个问题。 在开发中,您的资产仍将通过控制器,但在生产中,URL将根据您的需要。
示例config.yml:
assetic:
write-to: %kernel.root_dir%/../web/assets
...
framework:
...
templating:
engines: ['twig']
packages:
assetic:
base_urls: '/assets'
模板中的示例:
{% block javascripts %}
{% javascripts '@jquery' '@bootstrap_js' '@backbone' '@handlebars' combine=true package='assetic' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
请注意,您必须在java scripts标记中添加package ='assetic'属性。这是一个很好的妥协IMO,因为它不会像kmfk的解决方案那样打破其他捆绑产品的资产。
答案 3 :(得分:2)
快速说明一下。如果您使用assets_base_urls
,要指定相对基本URL,这仅适用于Symfony 2.7之前,因为该版本中引入了新的资产组件。有关如何更改此信息的更多信息,请参阅http://symfony.com/blog/new-in-symfony-2-7-the-new-asset-component,但其中的长短是:
framework:
templating:
assets_base_urls:
http: ['/some-relative-url']
ssl: ['/some-relative-url']
变为:
framework:
assets:
base_path: /some-relative-url
答案 4 :(得分:-4)
尝试此命令$ app/console --env=prod assetic:dump web/
你有责任改变你想要的网址而不是'web /'