2013-05-07 6 views
6

私はSymfony2プロジェクトでAsseticとCDNを使いたいと思っています。資産を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] 

投棄、私は私はいくつかのJavaScriptファイルを結合するjavascriptsヘルパーを使用しています結合されたファイルを取得しますが、そのURLはCDNを指すものではなく、相対URLです。例えば:

<script src="/js/c713f83.js"></script> 

複数のCSSファイルを組み合わせても同様です。私はCDNを使用してURLを取得するために管理する唯一の方法は、assetている:私は私の設定で指定したCDNホストを使用してからAsseticを防ぐものでは

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

ありますか?あなたがAsseticのを渡す必要が

答えて

9

asset()小枝の機能にasset_urlを生成:

{% 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のように見えるURLを取得することに注意してください。あなたはそれがCDNを使用していないので、あなたのdev環境を構成するために持っていることを防ぐために:

# app/config/config_dev.yml 
framework: 
    templating: 
     assets_base_urls: 
      http: [] 
      ssl: [] 

は全体的に、assetic:dumpであなたの資産をダンプして覚えて、覚えているAsseticSymfony2 asset Twig functionは、二つの異なるものです。

+0

例えば、twitter bootstrapはアイコン用のファイルを読み込み、cdn(Amazon S3)を使用してこれらのファイルを保存しておくなど、CSSファイル内のアセットに問題があります。修正方法はわかりますか? – Cassiano

+0

config_dev.ymlのassets_base_urlsを空白にするより簡単な解決策は、基本のconfig.ymlではなく、config_prod.ymlに配置することだけです。 –

関連する問題