Merci pour la vidéo. Mais à 8:30, on retrouve le souci du slug créé par l'utilisateur.
@gamesngeeks10 ай бұрын
On peut passer par les DTO non?
@tajimaryohei10 ай бұрын
Il y a pas mal de solutions pour pallier à cela. Perso je passe par l'utilisation du formulaire (le même qu'utilisé dans les vidéos précédentes) : tu gardes le contrôle des données et la logique de création du slug et des dates. Pour utiliser le formulaire il y a 2-3 modif à faire par rapport à ce qu'on fait d'habitude : on ne passe plus par la méthode $form->handleRequest() pour attacher les données envoyées mais plutôt par la méthode $form->submit($data) qui va soumettre le formulaire avec les données. Seul petit bémol, la méthode submit attends un tableau de données. Or le $request->getContent() nous renvoie un json donc faut le transformer en tableau (un bon vieux json_decode() marche). Et voilà. Si jamais le formulaire soumis est incorrect tu peux renvoyer les messages d'erreurs à l'utilisateur via la méthode $form->getErrors(true)
@golf3gtiii10 ай бұрын
Bonjour, Merci pour la vidéo. Concernant l'édition d'une entité, je ne comprends pas comment on peut utiliser MapRequestPayload. Est-ce qu'il y a un moyen simple de le faire ? J'ai cru comprendre qu'il fallait passer par un resolver, mais je n'ai pas trouvé d'exemple concret.
@codingfred10 ай бұрын
Bonjour, pareil, pour l'édition j'ai dû utiliser la méthode "deserialize" ...
@Raphael-jo1rp10 ай бұрын
A noter qu'à l'heure où j'écris ces lignes, CàD en utilisant Symfony 5.8.12, la méthode paginateRecipes retourne un TypeError : "App\Repository\RecipeRepository::paginateRecipes(): Argument #1 ($page) must be of type int, null given" Ceci malgré le nullable sur la propriété public du contructeur du PaginationDTO, appliqué aussi dans la méthode index de RecipesController avec pour valeur par défaut null. J'ai testé avec le code source, c'est la même erreur.
@vincentphilippe_1811 ай бұрын
Je ne comprends pas comment le MapRequestPayload fonctionnerait pour transformer un id en entité, je trouve ça assez limité finalement car c'est rare d'avoir des DTO composé uniquement de données scalaire
@R.e.n.e11 ай бұрын
Il peut pas pour avoir un objet à partir d'Id il faut utiliser faire la méthode find du repository de l'objet
@PresteusSparkling11 ай бұрын
Un Data Transfer Object ne contient que du scalaire à part peut-être une composition avec un tableau de DTO. Si tu as autres choses, c'est que tu ne respectes pas le pattern DTO 😉 Sinon, ce n'est pas l'attribut MapRequestPayload qui transforme les données d'entrées en instance d'objet, c'est le conteneur d'injection de dépendances (Autowiring).