Symfony2在css/less文件中断言错误的CSSRWRITE资源路径

Symfony2在css/less文件中断言错误的CSSRWRITE资源路径,css,symfony,less,twig,assetic,Css,Symfony,Less,Twig,Assetic,CSSRERITE筛选器在重写后生成错误的URL: 我的包中包含一个.less文件,位于 Resources/public/less/common.less 我还有一张图片,位于Resources/public/images/colorfulbg.jpg 我从命令行运行: php app/console assets:install web --symlink 在web目录中生成正确的公共结构: web +--bundles +--mybundle +--less

CSSRERITE筛选器在重写后生成错误的URL: 我的包中包含一个.less文件,位于 Resources/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 %}
由于重写的背景路径是:

url(../../bundles/mybundle/images/colorfulbg.jpg);
因此不应用背景

我做错了什么

我正在使用symfony 2.3和assetic bundle 2.3
谢谢

这是一个常见的问题,我建议您不要在开始时使用cssrewite过滤器,而使用带有
/
的URL

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 %}
追捧的图像

    xxx michael [master] $ app/console assetic:dump --env=dev

我恢复了线路,在再次踢阿塞特之后,他们又回来了。。。我认为dis建议不适用于涉及较少的事实?

我在为assetic指定
write\u to
选项时遇到了相同的问题(假设,我希望我的样式输出到
web/assets/css/styles.css
):

除了为
write\u to
选项指定
web/
文件夹之外,我找不到更好的解决方案(或者根本不指定它)。但是,您仍然可以为每个单独的资源使用子文件夹:

assetic:
    write_to:       '%kernel.root_dir%/../web'

    assets:
        my_stylesheets:
            output: 'assets/css/styles.css'
            inputs:
                - 'bundles/mybundle/css/styles.css'

注意:在上面两种情况下,样式都会出现在
web/assets/css/styles.css
,但在第一种情况下
csrewrite
会给出错误的路径,而第二种情况会很好。

我不明白你的意思……如果你只使用
背景图像:@bg url(images/colorfulbg.jpg)?url重写自:url(../../bundles/timerbase/images/colorfulbg.jpg);到url(../../bundles/timerbase/less/images/colorfulbg.jpg);我希望有类似(../images/colorfulbg.jpg)的东西,好吧,就这样就我个人而言,我和SASS在assetic上有过同样的看法,结论是你不想这么做。希望你有更多的运气!那么,解决方案是什么呢?即使在删除cssrewrite并按照您的建议使用url后,它仍然不起作用:/i认为app_dev.php会妨碍…@Stormsson您的操作系统支持符号链接吗?Windows没有。再次尝试
php应用程序/控制台资产:安装web--symlink
,然后导航到web目录并检查路径是否正确是的,我在osx上。路径似乎都是正确的,我确认我在第一篇文章中发布的结构已被检查无。。。食谱本身建议不要这样做,因为cssrewite:顺便说一句,问题是css/less文件中的url不正确。css/less文件已正确包含
    xxx michael [master] $ app/console assetic:dump --env=dev
assetic:
    write_to:       '%kernel.root_dir%/../web/assets'

    assets:
        my_stylesheets:
            output: 'css/styles.css'
            inputs:
                - 'bundles/mybundle/css/styles.css'
assetic:
    write_to:       '%kernel.root_dir%/../web'

    assets:
        my_stylesheets:
            output: 'assets/css/styles.css'
            inputs:
                - 'bundles/mybundle/css/styles.css'