Symfony - 5.8 Téléverser des images de plats avec Symfony
Un menu gagne en clarté quand chaque plat possède une image. Cette leçon ajoute un champ de téléversement à l'entité et au formulaire. Les images sont ensuite stockées dans un dossier accessible au site.
Ajouter le champ image
Téléchargez des images de nourriture sur Pixabay, un site de partage d'images diffusées sous licence libre. Créez ensuite une variable images dans l'entité, puis régénérez-la avec make:entity.
Dans le formulaire, ajoutez un champ de type fichier. Le contrôleur reçoit alors le fichier téléversé.
Configurer le dossier de stockage
Dans le contrôleur, le fichier est déplacé vers un dossier. Ce dossier doit être déclaré dans le fichier de paramètres des services, afin que le programme sache où trouver les images.
Il faut aussi prévoir une route dédiée, pour que les images soient accessibles depuis le navigateur.
Mettre la base à jour et afficher les données
Pour que la base reconnaisse les images, lancez la commande doctrine:schema:update avec l'option force. Une fonction description affiche ensuite l'aliment choisi.
Le template affiche le nom de l'aliment et son image. Le code de la page sélectionne l'aliment à partir de l'identifiant reçu.
php bin/console doctrine:schema:update --force
En résumé
Le champ image se déclare dans l'entité et dans le formulaire. Le fichier est déplacé vers un dossier configuré dans le projet. La fonction description affiche ensuite le nom et l'image de l'aliment.
Points clés
- Pixabay propose des images diffusées sous licence libre.
- Le champ de type fichier permet de téléverser une image.
- Le dossier de stockage se configure dans le fichier de paramètres des services.
- Une route rend les images accessibles dans le navigateur.
- La fonction description affiche le nom et l'image d'un aliment.
Questions fréquentes
Où trouver des images de nourriture gratuites ?
La vidéo utilise Pixabay, un site de partage d'images diffusées sous licence libre. Vérifiez toujours la licence avant de les utiliser.
Pourquoi configurer un dossier et une route ?
Le dossier sert à stocker les fichiers. La route permet au navigateur d'afficher les images stockées.
Pourquoi lancer doctrine:schema:update après l'ajout du champ ?
La base doit connaître le nouveau champ pour enregistrer les images. La mise à jour applique ce changement à la base.