app / Resources中的Symfony资产cssrewrite图像路径

时间:2016-02-09 14:05:02

标签: php css image symfony assetic

我在Symfony的CSS中遇到了资产和我的图片路径问题。 我的基本模板,我的基本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

您可以猜到,我的背景图片未加载(浏览器返回404未找到错误)。 我在互联网上搜索了很多,我发现了类似的情况,但是有一些捆绑的资源不在app / Resources中。

2 个答案:

答案 0 :(得分:0)

调用资产后:install和assetic:dump您将在web目录中找到您的文件(webservers文档根目录)httpd无法访问/ web中的所有文件,所以只需查看您的/ web文件夹并查看在bundles文件夹中

所以相对路径是

/bundles/bundlename/images/background.jpg

这可以在你的css文件中使用

答案 1 :(得分:0)

在捆绑包的public目录中创建Resources目录并运行assets:install --symlink命令时,会在web/bundles目录中创建一个符号链接,对应到您的捆绑名称。

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

/bundles/bundlename/images/background.jpg

修改

如果您真的不想将它们放入捆绑包中,只需将它们从app/Resources直接移到web文件夹,然后使用以下命令在您的css中调用它:

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

请参阅symfony2 how to access app/Resources/img from browser?