我正在尝试清理我在symfony 2应用程序中管理资产的方式,并且我增强了奇怪的问题。
我尝试使用此处所述的“命名资源”:Symfony Cookbook。 我发现在更改资产时更改配置文件比进入模板文件更简单。
所以我的yaml配置为assetic
:
assetic:
debug: "%kernel.debug%"
use_controller: "%kernel.debug%"
filters:
cssrewrite:
apply_to: '\.css$|\.less$'
lessphp:
file: '%kernel.root_dir%/../vendor/oyejorge/less.php/lessc.inc.php'
apply_to: '\.less$'
cssmin:
file: '%kernel.root_dir%/../vendor/natxet/CssMin/src/CssMin.php'
apply_to: '\.css$|\.less$'
jsmin:
file: '%kernel.root_dir%/../vendor/werkint/jsmin/JsMin/Minify.php'
apply_to: '\.js$|\.twigjs$'
# ...
font_awesome_css:
inputs: '%kernel.root_dir%/../vendor/fortawesome/font-awesome/less/font-awesome.less'
output: 'dist/css/font-awesome.min.css'
在我的模板中,我指的是FontAwesome(我使用FontAwesome作为示例,问题发生在我的其他css& javascript从yaml文件编译):
{% stylesheets '@font_awesome_css' %}
<link rel="stylesheet" media="screen" type="text/css" href="{{ asset_url }}" />
{% endstylesheets %}
当我运行php app/console assetic:dump --env=prod
时,文件web/dist/css/font-awesome.min.css
已正确编译和创建,但我也创建了web/css/f3c79b8.css
。
这是第二个使用的文件,似乎没有应用过滤器。
如果我在yaml文件中显式添加过滤器:
font_awesome_css:
inputs: '%kernel.root_dir%/../vendor/fortawesome/font-awesome/less/font-awesome.less'
output: 'dist/css/font-awesome.min.css'
filters:
- lessphp
- cssmin
- cssrewrite
它似乎生成了一个正确的文件(已编译的文件少)但是,由于我的字体属于dist
文件夹,因此css无法加载它。
那么,如何让我的模板使用正确生成的文件dist/css/font-awesome.min.css
并避免将文件创建到web/css
和web/js
?
我认为我对这个功能有些误解。
感谢您的帮助。