[Symfony v3.2] createForm
Bonjour,
Dans mon application je reçois une request en ‘PUT’, je réalise donc le traitement suivant :
Code:
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:
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:
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:
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:
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 ? :calim2:
D’avance merci.