Bonjour,
Je développe une appli web basée sur Symfony. Depuis le début du développement, j'utilise des formTypes.
Il y a pas mal de logique de leur côté, par exemple pour un entityType, le queryBuilder permet de pas filtrer les résultats.
Aujourd'hui, j'ai besoin d'améliorer une API. Globalement, j'ai fait des routes tout à fait normales, mais qui renvoient du JSON et qui traitent les données renvoyées. J'ai vu que l'API pouvait être générée quasi automatiquement avec API Platform. Ca me paraît très bien pour des opérations simples de création, modification, suppression (pour gérer un back-office typiquement). Mais par contre, si il y a toute une logique exécutée derrière (envoi de mails, création de PDF, etc), j'ai encore un peu de mal à comprendre comment ça peut fonctionner.
Par exemple, sur mon appli, j'ai un formulaire qui permet à un utilisateur de renseigner son prénom et choisir une activité et une méthode de paiement. Les méthodes de paiement affichées dépendent de l'utilisateur connecté, et les activités peuvent être publiées ou pas. Après la validation du formulaire, on imagine qu'on envoie des mails de notification.
Si je veux faire une API qui fait la même chose, j'ai vraiment du mal à voir comment procéder.
Idéalement, est-ce qu'il ne faudrait pas que, au lieu d'afficher le HTML comme c'est fait sur le site, je renvoie le "formulaire" en JSON avec les différentes activités possibles, les différentes méthodes de paiement et une indication qu'il y a un champ texte (le prénom) à remplir ?
Si je m'imagine avec API Platform, il faudrait une route qui renverrait les méthodes de paiement, mais du coup du code dupliqué pour les filtrer. Et une autre route qui renverrait les activités publiées. Donc 2 appels différents.
La logique des controleurs fonctionne, et j'ai l'impression qu'en voulant faire une API, je vais être amené à faire beaucoup de duplication, et que les formTypes n'auront plus aucune utilité
J'ai un autre problème un peu semblable : si demain je voulais faire un back-office en VueJs, les forms ne serviraient plus ... ?
Je ne sais pas si mon message est très clair, n'hésitez pas si vous avez besoin de précisions :)
Merci beaucoup !