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?
我在 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?