2013-05-07 11 views
6

Ich möchte CDN zusammen mit Assetic in meinem Symfony2-Projekt verwenden. Ich bin mit dem javascripts Helfer mehrere Javascript-Dateien kombinieren:Verwenden von CDN beim Kombinieren von Assets mit Symfony2 und Assetic

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

und in meiner config.yml Datei habe ich ein CDN registriert in den Vermögenswerten verwendet werden:

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

Wenn Dumping, ich tun Erhalte eine kombinierte Datei, aber ihre URL ist eine relative, nicht eine, die auf das CDN verweist. Zum Beispiel:

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

Und das gleiche passiert, wenn Sie mehrere CSS-Dateien kombinieren. Der einzige Weg, ich es geschafft, URLs zu erhalten, die CDN ist durch asset:

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

Gibt es etwas Assetic von der Nutzung der CDN-Hosts zu verhindern ich in meiner Konfiguration festgelegt haben?

Antwort

9

Sie haben die Assetic der erzeugten asset_url auf den asset() Zweig der Funktion zu übergeben:

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

Beachten Sie, dass in dev Umgebung Sie URLs erhalten, die wie http://my.cdn.url/app_dev.php/js/file-1.js aussieht. Um zu verhindern, dass Sie Ihre dev Umgebung konfigurieren müssen, damit es nicht CDN verwenden:

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

Denken Sie daran, Ihr Vermögen mit assetic:dump Dumping und insgesamt nicht vergessen, dass Assetic und die Symfony2 asset Twig function sind zwei verschiedene Dinge.

+0

Ich habe Probleme mit den Assets in CSS-Dateien, zum Beispiel lädt Twitter Bootstrap Dateien für Symbole und mit einem cdn (Amazon S3), um diese Dateien zu speichern sie sind Notiz geladen .. Weißt du, wie man es beheben? – Cassiano

+0

Einfachere Lösung als das Ausblenden der Datei "acces_base_urls" in "config_dev.yml" besteht darin, sie nur in Ihrer Datei "config_prod.yml" zu platzieren, anstatt mit der Basis "config.yml". –

Verwandte Themen