如何通过/ vendor dir中的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 %}
但它不会重写字体文件网址,它会保持不变,并且图标不会加载:
src: url('../fonts/fontawesome-webfont.eot?v=4.0.3');
我知道,我们不能让网址在webroot之外,但也许资产可以自动将这些依赖项放到/ web上?
我现在看到的唯一方法是使用安装后的composet脚本将此资产复制到/ web目录,但我想找到更好的方法。
谢谢!
答案 0 :(得分: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$"
然后调用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,
担
信用:https://gist.github.com/ilikeprograms/a8db0ad7824b06c48b44
2015年6月更新:答案发布于Symfony2版本2.1 / 2.3。这个答案可能适用于或不适用于最新版本:您必须检查
答案 1 :(得分: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'