cssrewrite过滤器在重写后产生错误的url: 我有我的包,其中包含一个.less文件 资源/ public / less / common.less
我还有一张图片,位于 Resources / public / images / colorfulbg.jpg
我从命令行运行:
php app/console assets:install web --symlink
在web目录中生成正确的公共结构:
web
+--bundles
+--mybundle
+--less
| +--common.less
|
+--images
+--colorfulbg.jpg
在我的模板中,我有以下内容:
{% stylesheets 'bundles/mybundle/less/*' filter='cssrewrite,less' %}
<link rel="stylesheet" href="{{ asset_url }}" type="text/css" />
{% endstylesheets %}
该文件夹只包含一个.less文件,它只是:
@bg: #f4f4f4;
body
{
background-image: @bg url(../images/colorfulbg.jpg);
}
有一些错误,因为重写的背景路径是:
url(../../bundles/mybundle/images/colorfulbg.jpg);
因此未应用背景
我做错了什么?
我正在使用symfony 2.3和资产包2.3 谢谢
答案 0 :(得分:0)
您在模板中对资产使用了错误的定义类型,请参阅以下内容(请注意@前缀)。同样在你的CSS中你必须从你的Bundle / Resources / public / less文件夹中相对下来。所以它不是/bundles/
或../bundles
,而是 最有可能 ../images/
。
{% stylesheets filter='less,cssembed,?yui_css' output='css/final.css'
'@AcmeDemoBundle/Resources/public/beautifulslider.css'
'@AcmeDemoBundle/Resources/public/less/site.less'
%}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen" />
{% endstylesheets %}
<强> UPDATE1 强>
鉴于上述情况,我的一个项目处于相同类型的设置中,它仍处于2.2但我不认为这很重要,我只是尝试从我的.less中删除这些行
& > a {
background:transparent url('../images/btn-big-gray.png') repeat-x;
}
图像消失后
xxx michael [master] $ app/console assetic:dump --env=dev
我恢复了这条线,并且在再次踢出资产之后他们又回来了......我认为dis推荐不计入LESS所涉及的事实?
答案 1 :(得分:0)
为assetic指定write_to
选项时遇到了同样的问题(假设,我希望我的样式输出到web/assets/css/styles.css
):
assetic:
write_to: '%kernel.root_dir%/../web/assets'
assets:
my_stylesheets:
output: 'css/styles.css'
inputs:
- 'bundles/mybundle/css/styles.css'
我找不到更好的解决方案,而不是为web/
选项指定write_to
文件夹以外的任何内容(或根本不指定它)。但是,您仍然可以为每个单独的资产使用子文件夹:
assetic:
write_to: '%kernel.root_dir%/../web'
assets:
my_stylesheets:
output: 'assets/css/styles.css'
inputs:
- 'bundles/mybundle/css/styles.css'
P.S。在两种大写的情况下,样式都在web/assets/css/styles.css
中,但在第一种情况下,csrewrite
将提供不正确的路径,而第二种情况则可以正常工作。
答案 2 :(得分:-3)
这是一个常见问题,我建议您不要使用cssrewrite过滤器,并在开头使用带/
的网址
url("/bundles/mybundle/images/colorfulbg.jpg");
当然这种方法有一个缺点,即网站必须安装在域的根目录中,但说实话,我没有看到子目录中安装的Symfony项目。