app/Resources 中的 Symfony assetic cssrewrite 图片路径

Symfony assetic cssrewrite image path in app/Resources

我在 Symfony 的 CSS 中遇到了 assetic 和图像路径的问题。 我的基础模板,我的基础 CSS,以及这个 CSS 中使用的图像都在文件夹 app/Resources.

我有这个:

app/
    Resources/
        public/
            css/
                base.css
            images/
                mybackground.png
    views/
        base.html.twig

在文件 base.css 中,我想加载文件 mybackground.css 作为背景,所以我有这一行:

background-image: url('../images/mybackground.png');

在文件 'base.html.twig' 中,我加载了 css:

{% stylesheets '@base_css' filter='cssrewrite' %}

<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="{{ asset_url }}" />

{% endstylesheets %}

我也尝试过不使用过滤器 cssrewrite

app/config/config.yml中,我有这个:

assetic:
filters:
    cssrewrite: ~
assets:
    base_css:
        inputs:
            - '../app/Resources/public/css/base.css'

在尝试之前,我使用了所有这些命令:

php app/console cache:clear
php app/console cache:clear --env=prod
php app/console assetic:dump
php app/console assetic:dump --env=prod --no-debug
php app/console assets:install --symlink web

如您所料,我的背景图片未加载(浏览器 returns 404 未找到错误)。 我在互联网上搜索了很多,我发现了类似的情况,但有些资源包中的资源不在 app/Resources.

在调用 assets:install 和 assetic:dump 之后,您会在网络目录(网络服务器文档根目录)中找到您的文件,httpd 无法访问所有不在 /web 中的文件,所以只需看一下您的 /web 文件夹并查看 bundles 文件夹

所以相对路径是

/bundles/bundlename/images/background.jpg

您可以在 css 文件中使用这个

当您在包的 Resources 目录中创建一个 public 目录,并且 运行 assets:install --symlink 命令时,将创建一个符号 link在 web/bundles 目录中,对应于您的包的名称。

此外,要检索您的图片,您应该使用 web 目录的相对路径而不是资产的绝对路径,即:

/bundles/bundlename/images/background.jpg

编辑

如果您真的不想将它们放在一个包中,只需将它们从 app/Resources 直接移动到 web 文件夹,然后在您的 css 中使用:

url('/images/background.jpg');

symfony2 how to access app/Resources/img from browser?