Symfony Twig : Afficher une Image par Défaut en Utilisant une Condition Ternaire

Dans le développement web avec Symfony et Twig, il est souvent nécessaire d’afficher une image par défaut lorsqu’une image spécifique n’est pas disponible. Cela peut être utile, par exemple, dans la création de modèles où une image associée à une entité peut être absente.

Dans cet article, nous allons voir comment mettre en place cette fonctionnalité en utilisant une condition ternaire simple dans Twig.

Prenons l’exemple suivant où nous avons besoin d’afficher une image associée à un élément de nourriture. Nous avons une variable item.food.photo qui contient le chemin de l’image de la nourriture. Si cette variable est vide, nous voulons afficher une image par défaut.

{% set imageSource = asset('upload/restaurant/' ~ item.food.photo) %}

{% if item.food.photo is empty %}
    {% set imageSource = asset('path/vers/noimage_food_foodyparis.jpg') %}
{% endif %}

<img src="{{ imageSource }}" alt="Image de la nourriture">

Voici comment nous pouvons le faire en utilisant une condition ternaire dans Twig :

{% set imageSource = item.food.photo is not empty ? asset('upload/restaurant/' ~ item.food.photo) : asset('path/vers/noimage_food_foodyparis.jpg') %}

<img src="{{ imageSource }}" alt="Image de la nourriture">

Dans ce code :

  • Nous définissons d’abord la variable imageSource en fonction du chemin de l’image fourni par item.food.photo.
  • Ensuite, nous utilisons une structure conditionnelle pour vérifier si item.food.photo est vide (empty). Si c’est le cas, nous changeons la valeur de imageSource pour le chemin de l’image de remplacement.
  • Enfin, nous utilisons la balise img pour afficher l’image en utilisant la valeur de imageSource