我想在我的Symfony2项目中将CDN与Assetic一起使用。我正在使用javascripts
帮助程序组合几个Javascript文件:
{% javascripts
'@MyBundle/Resources/public/js/file-1.js'
'@MyBundle/Resources/public/js/file-2.js' %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
在我的config.yml文件中,我已经注册了要在资产中使用的CDN:
framework:
templating:
assets_base_urls:
http: [http://my.cdn.url]
ssl: [https://my.cdn.url]
转储时,我确实得到了一个组合文件,但它的url是一个相对的文件,而不是一个指向CDN的文件。例如:
<script src="/js/c713f83.js"></script>
组合多个CSS文件时也是如此。我设法使用CDN获取网址的唯一方法是asset
:
<img src="{{ asset('bundles/mybundle/images/logo.png') }} ">
是否存在阻止Assetic使用我在配置中指定的CDN主机的任何内容?
答案 0 :(得分:9)
您必须将Assetic生成的asset_url
传递给asset()
Twig的函数:
{% javascripts
'@MyBundle/Resources/public/js/file-1.js'
'@MyBundle/Resources/public/js/file-2.js' %}
<script src="{{ asset(asset_url) }}"></script>
{% endjavascripts %}
请注意,在dev
环境中,您将获得类似http://my.cdn.url/app_dev.php/js/file-1.js
的网址。为了防止您必须配置dev
环境,以便它不使用CDN:
# app/config/config_dev.yml
framework:
templating:
assets_base_urls:
http: []
ssl: []
请记住使用assetic:dump
转储资产,总的来说,请记住Assetic和Symfony2 asset
Twig function是两回事。