Symfony2 - Assetic - css字体图标

Ale*_*.Sh 6 css php fonts symfony assetic

如何在/ 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 %}
Run Code Online (Sandbox Code Playgroud)

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

src: url('../fonts/fontawesome-webfont.eot?v=4.0.3');
Run Code Online (Sandbox Code Playgroud)

我知道,我们不能让网址在webroot之外,但也许资产可以自动将这些依赖项放到/ web上?

我现在看到的唯一方法是使用安装后的composet脚本将此资产复制到/ web目录,但我想找到更好的方法.

谢谢!

tho*_*roc 17

在#symfony频道上被问及我必须使用font-awesone的唯一答案是将它们包含在资产下的config.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$"
Run Code Online (Sandbox Code Playgroud)

然后调用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 %}
Run Code Online (Sandbox Code Playgroud)

最后转储文件.但是,根据我的经验,我得到了字体本身的重复文件.我可能做了一些愚蠢的事.

HTH,

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

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


ajt*_*rds 6

上面的答案很棒,但是如果你的字体没有存储在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'
Run Code Online (Sandbox Code Playgroud)