Symfony 7 : Créer une API, Désérialisation et MapRequestPayload

Ғылым және технология

Article ► grafikart.fr/tutoriels/symfon...
La désérialisation est le fonctionnement inverse à celui que l'on a vu précédemment. L'objectif est de convertir les données fournies dans un certain format dans un objet de notre application.
Soutenez Grafikart:
Devenez premium ► grafikart.fr/premium
Retrouvez Grafikart sur:
Le site ► grafikart.fr
Twitter ► / grafikart_fr
Discord ► grafikart.fr/tchat

Пікірлер: 10

  • @Raphael-jo1rp
    @Raphael-jo1rp4 ай бұрын

    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.

  • @GuillaumeC37
    @GuillaumeC375 ай бұрын

    Merci pour la vidéo. Mais à 8:30, on retrouve le souci du slug créé par l'utilisateur.

  • @gamesngeeks

    @gamesngeeks

    4 ай бұрын

    On peut passer par les DTO non?

  • @tajimaryohei

    @tajimaryohei

    4 ай бұрын

    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)

  • @golf3gtiii
    @golf3gtiii4 ай бұрын

    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.

  • @fredericfor8720

    @fredericfor8720

    4 ай бұрын

    Bonjour, pareil, pour l'édition j'ai dû utiliser la méthode "deserialize" ...

  • @vincentphilippe_18
    @vincentphilippe_185 ай бұрын

    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.e

    @R.e.n.e

    5 ай бұрын

    Il peut pas pour avoir un objet à partir d'Id il faut utiliser faire la méthode find du repository de l'objet

  • @JeanLebreton

    @JeanLebreton

    5 ай бұрын

    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).

  • @marxhubert
    @marxhubert5 ай бұрын

    1st comment

Келесі