6

我想在我的 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 获取 URL 的唯一方法是通过asset

<img src="{{ asset('bundles/mybundle/images/logo.png') }} ">

是否有任何东西阻止 Assetic 使用我在配置中指定的 CDN 主机?

4

1 回答 1

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 %}

请注意,在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,总体而言,请记住AsseticSymfony2 assetTwig 函数是两个不同的东西。

于 2013-05-07T19:39:25.850 回答