2013-05-07 50 views
6

我想在我的Symfony2項目中使用CDN和Assetic。我現在用的是javascripts助手把幾個Javascript文件:將資產與Symfony2和Assetic結合使用時使用CDN

{% 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主機?

回答

9

你必須通過Assetic的產生asset_urlasset()枝條的功能:

{% 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 asset Twig function是兩回事。

+0

我遇到了css文件內部資源的問題,例如,twitter bootstrap加載圖標文件並使用cdn(Amazon S3)來存儲這些文件,他們是注意加載..你知道如何解決它嗎? – Cassiano 2014-10-01 18:57:40

+0

比在config_dev.yml中清空assets_base_urls更容易的解決方案是隻將它們放置在config_prod.yml中,而不是以config.yml爲基礎。 – 2014-10-14 12:54:54

相關問題