2013-05-07 12 views
6

Chciałbym używać CDN razem z Assetic w moim projekcie Symfony2. Używam javascripts pomocnika do łączenia kilku plików javascript:Używanie CDN podczas łączenia zasobów z Symfony2 i Assetic

{% javascripts 
    '@MyBundle/Resources/public/js/file-1.js' 
    '@MyBundle/Resources/public/js/file-2.js' %} 
    <script src="{{ asset_url }}"></script> 
{% endjavascripts %} 

w moim pliku config.yml Zarejestrowałem CDN być stosowane w aktywach:

framework: 
    templating: 
     assets_base_urls: 
     http: [http://my.cdn.url] 
     ssl: [https://my.cdn.url] 

Kiedy dumping, robię uzyskać połączony plik, ale jego adres URL jest względny, a nie wskazuje na CDN. Na przykład:

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

To samo dzieje się przy łączeniu kilku plików CSS. Jedynym sposobem udało mi się dostać adresy URL za pomocą CDN jest przez asset:

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

Czy jest coś zapobiegania Assetic z wykorzystaniem gospodarze CDN Mam określone w mojej konfiguracji?

Odpowiedz

9

Trzeba przekazać Assetic generowała asset_url aby funkcja asset() gałązka za:

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

Należy pamiętać, że w środowisku dev dostaniesz adresy URL, które wyglądają jak http://my.cdn.url/app_dev.php/js/file-1.js. W celu zapobieżenia, że ​​trzeba skonfigurować swoje środowisko dev więc nie używać CDN:

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

Pamiętaj dumping swoje aktywa z assetic:dump i, ogólnie rzecz biorąc, należy pamiętać, że Assetic i Symfony2 asset Twig function są dwie różne rzeczy.

+0

Mam problemy z zasobami wewnątrz plików CSS, na przykład twitter bootstrap ładuje pliki dla ikon i używa CDN (Amazon S3) do przechowywania tych plików, które ładują notatki. Czy wiesz, jak to naprawić? – Cassiano

+0

Łatwiejszym rozwiązaniem niż wygaszenie asset_base_urls w pliku config_dev.yml jest umieszczenie ich tylko w pliku config_prod.yml na początku, a nie w pliku base config.yml. –

Powiązane problemy