Bonjour,
Dans mon application je reçois une request en ‘PUT’, je réalise donc le traitement suivant :
Il s’agit d’une collection :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $user = $userRepository->find($id); $form = $this->createForm(UserType::class, $user, array('method' => 'PUT')); $form->handleRequest($request);
previousTrainerType :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ->add('previous_trainer', CollectionType::class, array( 'entry_type' => previousTrainerType::class, 'allow_add' => true, 'allow_delete' => true, 'required' => false, 'by_reference' => false ))
TrainerType
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 public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('year', IntegerType::class, array( 'constraints' => array( new NotBlank(), ) )) ->add('trainer', TrainerType::class, array( 'constraints' => array( new NotBlank() ) )) ; }
Il s’agit d’une relation @OneToMany :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $builder ->add('id', IntegerType::class/*, array( 'constraints' => array( new NotBlank() ) )*/) ; }
Je constate une différence entre les données présentes dans l’objet request et dans l’objet $user, dans un cas de figure bien précis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 /** * One User can have many previous trainer. * * @ORM\OneToMany(targetEntity="PreviousTrainer", mappedBy="user", cascade={"persist"}, orphanRemoval=true) * * @var Collection */ protected $previousTrainer;
A savoir, soit 2 objets, si a un moment les trainer_id sont identiques,par exemple 3 et 3 et que l’on change en 3 et 1 au PUT suivant. On obtient cela :
Dans le request on a bien 2 sous objets avec les bonnes valeurs :
YEAR TRAINER_ID USER_ID 2015 1 1 2017 3 1
Et dans le form une fois la fonction createForm exécutée, on a :
YEAR TRAINER_ID USER_ID 2015 3 1 2017 3 1
Quelqu’un aurais-t-il une idée de ce que je ne fais pas correctement ?
D’avance merci.
Partager