Symfony2的Assetic错误cssrewrite资源CSS /减档路径
的cssrewrite过滤器重写后产生错误的URL: 我有我的包包含位于 资源/公/更少/ common.less一个.LESS文件Symfony2的Assetic错误cssrewrite资源CSS /减档路径
我也有一个图像,位于资源/公/图片/ 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和assetic包2.3 谢谢
这是一个常见的问题,我建议你不要使用cssrewrite过滤器,并在一开始就使用与/
网址
url("/bundles/mybundle/images/colorfulbg.jpg");
中当然这种方法有一个缺点,即网站必须安装在域的根目录下,但说实话我没有在子目录中看到Symfony项目。
您的模板中的资产使用了错误的定义类型,请参阅以下内容(注意@前缀)。同样在你的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,但我不认为这事我只是给它一个尝试
xxx michael [master] $ app/console assetic:dump --env=dev
之后,从我.LESS删除这些行
& > a {
background:transparent url('../images/btn-big-gray.png') repeat-x;
}
图片不见了
我恢复了线路,并且在踢出资产后他们又回来了......我认为dis的推荐并不包括LESS参与的事实吗?
assetic:
write_to: '%kernel.root_dir%/../web/assets'
assets:
my_stylesheets:
output: 'css/styles.css'
inputs:
- 'bundles/mybundle/css/styles.css'
我无法找到一个更好的解决方案,而随后不指定任何东西比web/
文件夹:
nope ...食谱本身建议不要这样做,因为cssrewrite:http://symfony.com/doc/current/ cookbook/assetic/asset_management.html #include -css-stylesheets btw问题是INSIDE css/less文件的url不正确。正确包含css/less文件 – Stormsson
我认真推荐您尝试使用它...我会更新为什么 – wtfzdotnet
指定为assetic(假设,我想我的风格输出到web/assets/css/styles.css
)write_to
选项时,我有同样的问题为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
会给出不正确的路径,而第二种情况会正常工作。
我不认为我明白你是什么意思... – Stormsson
如果你只是简单地使用'background-image:@bg url(images/colorfulbg.jpg);'? – nietonfir
url被改写为: url(../../ bundles/timerbase/images/colorfulbg.jpg); 至 url(../../ bundles/timerbase/less/images/colorfulbg.jpg); 我会期待像(../images/colorfulbg.jpg) – Stormsson