如何在/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'