如何替换在Symfony中找不到的图像


How to replace not found images in Symfony

通常你会包括带有

<img src="{{ asset('location') }}"/>

但是,如果图像不存在,则会抛出 404 并显示损坏的图像。如何显示另一张图像而不是损坏的图像?有没有办法在树枝上做到这一点?

我还在使用SonataMediaBundle,它显示的图像如下:

{% path media, 'small' %}

认为捆绑包内有一种方法可以检查图像是否存在,但它不存在。

如果您不想事先检查文件是否存在,请尝试使用 onerror

<img src="{{ path("image.svg") }}" onerror="this.src='{{path("image.png") }}'"/>

你可以用重写来做到这一点。在项目目录中创建一个 .htaccess 文件。添加以下行。

RewriteEngine On
<FilesMatch "'.(jpe?g|png|gif)$">
    ErrorDocument 404 "/img/default-image.gif"
</FilesMatch>

编辑

您可以使用DirectoryMatch匹配目录。您也可以在其中嵌套FilesMatch

<DirectoryMatch "^/www/xyz/"> <FilesMatch "'.(jpe?g|png|gif)$"> ErrorDocument 404 "/img/default-image.gif" </FilesMatch> </DirectoryMatch>