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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
{
  "login": "string",
  "actif": true,
  "email": "user@example.com"
}
Le JSON attendu :
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"
}
En suivant les documents, j'ai tenté de mettre en place :
- la serialisation par groupes :
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;
...
- annoter mes propriétés :
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;
- le changement de nom de conversion :
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'
- mettre un $normalizer ou une metadata dans mon entité utilisateur

Tout ceci sans succès jusqu'à présent.

Si vous avez une piste, je suis preneur!
Bonne journée,