Symfony 2中CSS文件中资产的路径

问题

我有一个CSS文件,其中包含一些路径(用于图像,字体等。url(..))。


我的路径结构是这样的:


...

+-src/

| +-MyCompany/

|   +-MyBundle/

|     +-Resources/

|       +-assets/

|         +-css/

|           +-stylesheets...

+-web/

| +-images/

|   +-images...

...

我想在样式表中引用我的图像。


第一个解决方案

我将CSS文件中的所有路径更改为绝对路径。这不是解决方案,因为应用程序也应该(并且必须!)也在子目录中工作。


第二解决方案

与一起使用Assetic filter="cssrewrite"。


所以我将我的CSS文件中的所有路径都更改为


url("../../../../../../web/images/myimage.png")

代表从我的资源目录到/web/images目录的实际路径。这不起作用,因为cssrewrite会生成以下代码:


url("../../Resources/assets/")

这显然是错误的道路。


assetic:dump创建此路径后,这仍然是错误的:


url("../../../web/images/myimage.png")

Assetic的树枝代码:


{% stylesheets

    '@MyCompanyMyBundle/Resources/assets/css/*.css'

    filter="cssrewrite"

%}

<link rel="stylesheet" href="{{ asset_url }}" />

{% endstylesheets %}

当前(第三)解决方案

由于所有CSS文件都以结尾/web/css/stylexyz.css,因此我将CSS文件中的所有路径更改为相对路径:


url("../images/myimage.png")

这种(错误的)解决方案可以正常工作,但在dev环境中除外:CSS路径为/app_dev.php/css/stylexyz.css,因此由此产生的图像路径为/app_dev.php/images/myimage.png,从而导致NotFoundHttpException。


有更好的可行解决方案吗?


天涯尽头无女友
浏览 861回答 3
3回答

精慕HU

目前,cssrewrite过滤器与@bundle表示法不兼容。因此,您有两种选择:参考在网络文件夹中的CSS文件(后:console assets:install --symlink web){% stylesheets '/bundles/myCompany/css/*." filter="cssrewrite" %}使用cssembed过滤器像这样将图像嵌入CSS。{% stylesheets '@MyCompanyMyBundle/Resources/assets/css/*.css' filter="cssembed" %}
打开App,查看更多内容
随时随地看视频慕课网APP