📄️ introduction
Préparation
📄️ 19-1 Model/Repository/Service
On sait que pour ajouter le support pour des questions, il nous faudra:
📄️ 19-2 Migration table questions
Si vous avez fait le boss Mean Migrator, vous avez déjà une migration pour la table commentaires.
📄️ 19-3 Route imbriquée et contrôleur
On se souvient qu'on essaie lorsque possible de se coller sur le format de routes de type REST:
📄️ 19-4 Action Questions#New
New
📄️ 19-5 Formulaire et enregistrement d'une question
Maintenant qu'il est possible d'afficher la vue New, il nous faudra un formulaire permettant de soumettre les données.
📄️ 19-6 Gestion des id erronés ou inexistants
Le formulaire d'ajout de question fonctionne comme attendu, mais il y a un problème possible dans le cas où le id de l'événement récupéré n'est pas celui d'un événement valide.
📄️ 19-7 Rétroaction utilisateur et TempData
Vous avez peut-être remarqué qu'on ne renvoie pas de rétroaction à l'utilisateur après qu'il ait posé sa question, comme quoi l'opération a bien réussi.
📄️ 😈 Mini-mini Boss
Faites en sorte de mettre dans une vue partielle FlashMessage le message Toast, de sorte à simplifier la vue Layout.
📄️ 19-8 Afficher la liste de questions
Imaginons qu'il est possible pour un utilisateur de voir la liste de questions qu'il a déjà posée pour un événement afin de modifier ou supprimer une question.
📄️ 19-9 Support pour PUT/PATCH/DELETE
Un formulaire, selon le standard HTML ne peut effectuer que les types de requête HTTP suivante:
📄️ 19-10 Modification d'une question
Pour modifier une question, on utilise la même recette que pour la création. C'est-à-dire qu'on aura un ViewModel pour la mise à jour, une action de contrôleur, ainsi qu'une vue avec un formulaire.
📄️ 19-11 Sécuriser la modification
Peut-être vous êtes-vous dit lors de la modification d'une question qu'on ne vérifiait pas que cette dernière appartenait bel et bien à l'utilisateur essayant de faire la modification !?
📄️ 19-12 Supprimer une question
Dernière étape, la suppression!
📄️ 19-13 Bonjour, Htmx
Htmx est une librairie JavaScript qui permet d'ajouter une touche d'interactivité aux pages, tout en respectant la nature du rendu serveur. Pas de JavaScript à écrire ni de retour en JSON. Seulement du bon vieux HTML.
📄️ 19-14 Confirmation de suppression et un peu de magie
La suppression de question est un peu brutale dans le sens qu'elle ne laisse pas de marge d'erreur. Vous accrochez le bouton, pouf, disparu!