2014-05-03 20 views
5

Wie man css font icon libraries einbindet, wird über composer in/vendor dir (fontawesome zum Beispiel) installiert. Umfassen:Symfony2 - Assetic - css font icons

{% stylesheets filter='cssrewrite' 
    '%kernel.root_dir%/../vendor/fortawesome/font-awesome/css/font-awesome.min.css' %} 
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet"/> 
{% endstylesheets %} 

Aber es does't Rewrite Schriftart URL Dateien, bleibt es gleich, und Symbole Belastung gewohnt:

src: url('../fonts/fontawesome-webfont.eot?v=4.0.3'); 

ich weiß, können wir nicht Urls außerhalb von Webroot machen poined, aber vielleicht kann assetic diese Abhängigkeiten zu/web automatisch setzen?

Die einzige Möglichkeit, die ich jetzt sehe, ist, diese Assets in/Web Verzeichnis mit Post-Installation Composite-Skript zu kopieren, aber ich möchte einen besseren Weg finden.

Danke!

Antwort

14

Auf den #symfony-Kanal gestellt und die einzige Antwort, die ich mit assetic mit font-awesone verwenden musste, war, sie in die config.yml unter assetic aufzunehmen. Der ursprüngliche Code ist der folgende:

assetic: 
    java: /usr/bin/java 
    use_controller: false 
    bundles: [ CorvusFrontendBundle, CorvusAdminBundle ] 
    assets: 
     font-awesome-otf: 
    inputs: '%kernel.root_dir%/Resources/public/fonts/FontAwesome.otf' 
    output: 'fonts/FontAwesome.otf' 
     font-awesome-eot: 
    inputs: '%kernel.root_dir%/Resources/public/fonts/fontawesome-webfont.eot' 
    output: 'fonts/fontawesome-webfont.eot' 
     font-awesome-svg: 
    inputs: '%kernel.root_dir%/Resources/public/fonts/fontawesome-webfont.svg' 
    output: 'fonts/fontawesome-webfont.svg' 
     font-awesome-ttf: 
    inputs: '%kernel.root_dir%/Resources/public/fonts/fontawesome-webfont.ttf' 
    output: 'fonts/fontawesome-webfont.ttf' 
     font-awesome-woff: 
    inputs: '%kernel.root_dir%/Resources/public/fonts/fontawesome-webfont.woff' 
    output: 'fonts/fontawesome-webfont.woff' 
    filters: 
    cssrewrite: ~ 
    yui_js: 
     jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.8.jar 
    lessphp: 
     file: "%kernel.root_dir%/../vendor/oyejorge/less.php/lessc.inc.php" 
     apply_to: "\.less$" 

dann die CSS-Datei wie folgt aufrufen:

{# Common Stylesheets #} 
{% stylesheets filter="?cssrewrite" 
    '%kernel.root_dir%/Resources/public/css/font-awesome.min.css' 
    '@CorvusCoreBundle/Resources/public/css/common.less' 
%} 
    <link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

Und schließlich die Dateien Dumping. Jedoch, und nach meiner Erfahrung, erhalte ich doppelte Dateien für die Schriftarten selbst. Ich mache wahrscheinlich etwas Dummes.

HTH,

Tam

Kredit: https://gist.github.com/ilikeprograms/a8db0ad7824b06c48b44

-Update Juni 2015: Die Antwort für die Version 2.1/2.3 von Symfony2 gebucht wurde. Diese Antwort trifft möglicherweise auf die aktuellste Version zu oder nicht: Sie müssen überprüfen

+1

Sind Ihre Duplikate wie folgt: 'xxxxxx_font.eof',' xxxxxxx.eof'. Wenn das der Fall ist, dann ist das der Fall, weil Sie nicht --env = prod. – Henry

+0

Es ist eine Weile her, und ich habe das seit meiner Antwort nicht mehr benutzt. Aber ich denke es war. Danke für den Kommentar. :) – thoroc

+1

Ich bin mit Symfony 2.7 und es setzt Schriften assetic/fonts_glyphicons_halflings_regular_woff2.woff2 statt fonts/glyphicons-Hobbits-regular.woff2 'fonts_glyphicons_halflings_regular_woff2: Eingänge:% kernel.root_dir%/../Verkäufer/almasaeed2010 /adminlte/bootstrap/fonts/glyphicons-halflings-regular.woff2 Ausgaben: Schriften/Glyphicons-Halblings-regular.woff2' –

6

Große Antwort oben, aber für Gelegenheiten, wenn Ihre Schriftarten nicht im App-Verzeichnis gespeichert sind, wird das obige nicht funktionieren. Meine CSS-Dateien werden in meinem eigenen Bundle aufbewahrt. Um sicherzustellen, dass sie gefunden werden, musste ich meine app/config/config.yml wie folgt konfigurieren:

assetic: 
    debug:   "%kernel.debug%" 
    use_controller: false 
    bundles: 
     - AjtrichardsAdminBundle 
     - AjtrichardsMainBundle 
    assets: 
     font-awesome-ttf: 
     inputs: '@AjtrichardsMainBundle/Resources/public/fonts/icons.ttf' 
     output: 'fonts/icons.ttf' 
     font-awesome-woff: 
     inputs: '@AjtrichardsMainBundle/Resources/public/fonts/icons.woff' 
     output: 'fonts/icons.woff'