Séance 4
Mise en place du catalogue de produits avec ajouter au panier, indication du nombre de produits dans le panier, ...
Mise en place de la page catalogue. Cette page doit afficher la liste des produits disponibles avec un bouton permettant l'ajout au panier.
Vous veillerez à travailler l'affichage pour intégrer les éléments nécessaires, coller à votre gabarit et avoir une accessibilité correcte.
Vous pouvez faire cette page en PHP, avec un tableau de produits en dur, ou HTML en dupliquant les blocs de produits. L'objectif est d'afficher une dizaine de produits, avec, a minima une image, un titre, un prix et un bouton d'ajout au panier.
Exercice
Intégrer votre menu (avec un endroit pour afficher la quantité d'article dans le panier) et votre page catalogue.
Mise en place du bouton ajouter
Le bouton ajouter doit faire plusieurs choses :
ajouter le produit au panier (dans une variable JavaScript), puis dans le localStorage
mettre à jour la quantité d'article dans le panier (dans le menu)
éventuellement afficher un message de confirmation et indiquer la quantité selectionnée dans l'article.
Comme nous l'avons fait sur les séances précédentes, nous allons parcourir tous les boutons "Ajouter au panier" et ajouter un écouteur d'événement sur le clic.
Gestion du clic
Les étapes à faire sont les suivantes :
Récupérer les informations du produit
On peut soit parcourir le dom pour récupérer les informations (titre, prix, id), soit récupérer les informations avec des attributs "data", soit récupérer depuis une source de données (appel API, ...).
Vérifier si le produit est déjà dans le panier
Si oui, on doit augmenter la quantité
Si non, on doit l'ajouter dans le panier avec une quantité 1
Mettre à jour la quantité d'article dans le panier (dans le menu)
Deux logique, on affiche le nombre différents de produit, on affiche la quantité réelle de produit. A votre convenance.
Exercice
Mettre en place le fonctionnement des boutons et l'affichage du nombre de produits dans le menu
Stockage dans le localStorage
Actuellement, si vous actualisez votre page, tout est perdu. Ce n'est pas très pratique... Une solution simple consiste à stocker les informations dans le localStorage
ou sessionStorage
.
Lire ici pour plus de détails : https://fr.javascript.info/localstorage
Les principales caractéristiques de
localStorage
sont les suivantes :Partagé entre tous les onglets et fenêtres d’une même origine.
Les données n’expirent pas. Il reste après le redémarrage du navigateur et même le redémarrage du système d’exploitation.
L’objet
sessionStorage
est beaucoup moins utilisé quelocalStorage
.Les propriétés et les méthodes sont les mêmes, mais c’est beaucoup plus limité :
Le
sessionStorage
n’existe que dans l’onglet actuel du navigateur.Un autre onglet avec la même page aura un stockage différent.
Mais il est partagé entre les iframes du même onglet (en supposant qu’ils proviennent de la même origine).
Les données survivent à l’actualisation de la page, mais pas à la fermeture/ouverture de l’onglet.
Nous allons utiliser localStorage
pour stocker les produits du panier. Les méthodes principales sont :
setItem(key, value)
– stocke la paire clé/valeur.getItem(key)
– récupère la valeur par clé.removeItem(key)
– supprime la clé avec sa valeur.clear()
– supprime tout.key(index)
– récupère la clé sur une position donnée.length
– le nombre d’éléments stockés.
Exercice
Modifiez votre code catalogue pour sauvegarder les éléments ajoutés dans le panier dans le localStorage
.
Modifiez la page panier pour récupérer maintenant les données depuis le localStorage
et le mettre à jour à chaque modification.
Last updated