Bonjour,
J'ai des difficultés sur mon projet symfony avec le serializer. En effet, certaines de mes propriétés renseignés dans mon attributs utilisateur, ne sont pas renseignables dans le JSON mis a disposition par API-Platform, et même en les rajoutant à la main, cela me produit des erreurs 500 disant que le champ ne peut pas être nul.
En cherchant, j'ai remarqué que mes propriétés qui ont été générées en snake_case par le make:entity ne sont pas disponible :
Le JSON mis en place par API-Platform:
Le JSON attendu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 { "login": "string", "actif": true, "email": "user@example.com" }
En suivant les documents, j'ai tenté de mettre en place :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 { "login":"apitest", "mdp_provisoire":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "type_utilisateur":"xxxxxxxxxxxxxx", "actif":true, "premiere_connexion":true, "email":"api@example.com" }
- la serialisation par groupes :
- annoter mes propriétés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #[ORM\Entity(repositoryClass: UtilisateurRepository::class)] #[ApiResource( // normalizationContext:['groups' => ['read']], denormalizationContext:['groups' => ['Utilisateur:new']], )] class Utilisateur implements UserInterface, PasswordAuthenticatedUserInterface #[ORM\Column(type: 'string', length: 150, unique:true, nullable:false)] #[Groups("Utilisateur:new")] private $login; #[ORM\Column(type: 'string', length: 255, nullable: false)] #[Groups("Utilisateur:new")] private $mdp_provisoire; #[ORM\Column(type: 'string', length: 50)] #[Groups("Utilisateur:new")] private $type_utilisateur; #[ORM\Column(type: 'boolean')] #[Groups("Utilisateur:new")] private $actif; ...
- le changement de nom de conversion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #[ORM\Column(type: 'string', length: 150, unique:true, nullable:false)] #[Groups("write:utilisateur")] #[SerializedName('login')] private $login; #[ORM\Column(type: 'string', length: 255, nullable: false)] #[Groups("write:utilisateur")] #[SerializedName('mdp_provisoire')] private $mdp_provisoire;
- mettre un $normalizer ou une metadata dans mon entité utilisateur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 # api/config/services.yaml services: 'Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter': ~ # api/config/packages/api_platform.yaml api_platform: name_converter: 'Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter'
Tout ceci sans succès jusqu'à présent.
Si vous avez une piste, je suis preneur!
Bonne journée,
Partager