在将资产与Symfony2和Assetic组合时使用CDN

Jos*_*rez 6 symfony assetic

我想在我的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 %}
Run Code Online (Sandbox Code Playgroud)

在我的config.yml文件中,我已经注册了要在资产中使用的CDN:

framework:
    templating:
      assets_base_urls:
        http: [http://my.cdn.url]
        ssl: [https://my.cdn.url]
Run Code Online (Sandbox Code Playgroud)

转储时,我确实得到了一个组合文件,但它的url是一个相对的文件,而不是一个指向CDN的文件.例如:

<script src="/js/c713f83.js"></script>
Run Code Online (Sandbox Code Playgroud)

当组合几个CSS文件时也会发生同样的情况.我设法使用CDN获取URL的唯一方法是asset:

<img src="{{ asset('bundles/mybundle/images/logo.png') }} ">
Run Code Online (Sandbox Code Playgroud)

有什么阻止Assetic使用我在配置中指定的CDN主机吗?

iam*_*dto 9

你必须将生成的Assetic传递asset_urlasset()Twig的函数:

{% javascripts
  '@MyBundle/Resources/public/js/file-1.js'
  '@MyBundle/Resources/public/js/file-2.js' %}
  <script src="{{ asset(asset_url) }}"></script>
{% endjavascripts %}
Run Code Online (Sandbox Code Playgroud)

请注意,在dev环境中,您将获得看起来像的URL 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:  []
Run Code Online (Sandbox Code Playgroud)

记住倾销你的资产assetic:dump,总的来说,记住AsseticSymfony2 assetTwig功能是两回事.