Symfony2 - astic - css字体图标


Symfony2 - Assetic - css font icons

如何在/vendor目录中包含通过composer安装的css字体图标库(例如fontawesome)。包括:

{% 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 %}

但它不会重写字体文件url,它保持不变,图标不会加载:

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

我知道,我们不能让url指向webroot之外,但也许资产可以把这个依赖自动到/web ?

我现在看到的唯一方法是将这些资产复制到/web目录与安装后的组合脚本,但我想找到一个更好的方法。

谢谢!

在#symfony频道上询问,我唯一的答案是使用asset with font-awesone将它们包含在配置中。Yml在资产下。原始代码如下:

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$"

然后按如下方式调用css文件:

{# 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 %}

最后转储文件。然而,根据我的经验,我得到了字体本身的重复文件。我可能在做蠢事。

HTH,

Tam公司的

信用:https://gist.github.com/ilikeprograms/a8db0ad7824b06c48b44

2015年6月更新:Symfony2的2.1/2.3版本发布了答案。这个答案可能适用于也可能不适用于最新版本:您必须检查

上面的答案很好,但是当你的字体没有存储在app目录中时,上面的答案就不起作用了。我的CSS文件保存在我自己的包中,所以为了确保它们被找到,我需要像这样配置我的app/config/config.yml;

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'