Symfony2 Assetic cssrewrite制作不良链接

时间:2015-04-17 16:35:13

标签: css symfony assetic

我有一些css文件被资产组合成一个css文件。他们对cssrewrite重写的图像资产有一些参考。 Cssrewrite显然是完全错误的链接。

文件夹结构:

-src
   -Project
      -StoreBundle
         -public
            -images
               -store
                  -v2
                    -logo.svg
            -css
               -store
                  -v2
                    -font.css
                    -html5reset.css
                    -store.css

我在config.yml中有以下资产设置:

store_web_css:
    inputs:
        - '@ProjectStoreBundle/Resources/public/css/store/v2/html5reset.css'
        - '@ProjectStoreBundle/Resources/public/css/store/v2/font.css'
        - '@ProjectStoreBundle/Resources/public/css/store/v2/store.css'
    filters:
        - ?yui_css
        - cssembed
        - cssrewrite
    output: css/store.web.css

Assetic设置为将图像写入/web/bundles/projectstore/images/store/v2/,而组合的css文件(store.web.css)写成`/ web / css / store'

css文件中有以下链接:

url('../bundles/projectstore/images/store/v2/logo.svg');

在/web/css/store.web.css中成为了这个:

url(../Resources/public/css/store/bundles/pokkistore/images/store/v2/logo.svg);

我在其他帖子中读到cssrewrite过滤器使用引用css文件的@样式的错误,但是即使我尝试更改它们,logo.svg和其他资产的链接仍然会被破坏。

Assetic将write_to设置为“web / store”,没有read_from的设置。

2 个答案:

答案 0 :(得分:0)

您需要使用bundles/projectstore表示法而不是@ProjectStoreBundle/Resources/public表示法stated in the official documentation

  

您使用实际的,可公开访问的路径引用了CSS文件:bundles / app / css。您可以使用其中任何一个,除了在使用CSS样式表的@AppBundle语法时存在导致cssrewrite过滤器失败的已知问题。

使用相对路径指向样式表编写时的位置,而不是使用Assetic处理样式表的位置:

url('../bundles/projectstore/images/store/v2/logo.svg');

错误,它应该有一个相对的资产路径,如:

url('logo.svg');

如果它们都在同一目录中。或者在你的情况下:

url('../../../images/store/v2/logo.svg');

答案 1 :(得分:0)

只需更改输出以匹配您的路径:

像...

{%stylesheets'@ DefaultBundle / Resources / public / css / screen-normalize.css'output ='/ bundles / default / css / main.css'%}