Bonjour,

Dans mon application je reçois une request en ‘PUT’, je réalise donc le traitement suivant :

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);
Il s’agit d’une collection :

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
))
previousTrainerType :
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()
                )
            ))
        ;
    }
TrainerType
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()
                )
            )*/)
        ;
    }
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
 
/**
* One User can have many previous trainer.
*
* @ORM\OneToMany(targetEntity="PreviousTrainer", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
*
* @var Collection
*/
protected $previousTrainer;
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.

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.