15

cssrewrite 过滤器在重写后产生错误的 url:我的包包含一个位于 Resources/public/less/common.less中的 .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 和assetic bundle 2.3 谢谢

4

3 回答 3

1

在为资产指定选项时我遇到了同样的问题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'

PS 在这两种大写形式中,样式都是 in web/assets/css/styles.css,但在第一种情况下csrewrite会给出不正确的路径,而第二种情况下会正常工作。

于 2018-01-11T13:39:09.620 回答
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 %}

更新1

鉴于上述情况,我的一个项目处于相同的设置中,它仍然在 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 的事实?

于 2013-10-31T23:51:07.427 回答
-3

这是一个常见的问题,我建议你不要使用 cssrewrite 过滤器并/在开头使用 urls

url("/bundles/mybundle/images/colorfulbg.jpg");

当然,这种方法有一个缺点,即网站必须安装在域的根目录中,但老实说,我还没有看到 Symfony 项目安装在子目录中。

于 2013-10-31T23:25:12.353 回答