Bonjour à tous,

J'ai un formulaire de réservation sous Symfony 3.4.6, où je remplis le nom et choisis la chambre (et plein d'autres champs, mais je ne vais pas mettre des km de code).
Mon but est de réafficher le formulaire en readonly (avec pour chambre son nom et non son id, d'où le pavé lignes 16 à 26 dans mon controller), pour que l'utilisateur relise ce qu'il a écrit, puis valide ou annule.

Je soumets donc mon formulaire et je le dump : je constate que mes données ne sont que dans extradata, et pas dans les objets liés à ma réservation !
Donc ensuite dans mon controller, je récupère dans extradata la données 'idChambre' (lignes 10 à 13, ça marche), mais au test si mon formulaire est valide (ligne 28), ça ne passe pas.

Enfin, ça me semble normal que ça ne passe pas, vu que mon entité 'réservation' est vide.
Mais je ne comprends pas pourquoi toutes mes données atterrissent dans extradata, et pas dans mon entité !
Il y a surement un problème dans mon controller, mais je ne vois pas...

Quelqu'un a une idée svp ?
Merci d'avance pour votre aide.

Dump des données de mon formulaire :
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
24
private 'data' (Symfony\Component\Form\FormConfigBuilder) => 
        object(testBundle\Entity\Reservation)[449]
          private 'id' => null
          private 'nom' => null
          private 'idChambre' => null
private 'modelData' => 
    object(testBundle\Entity\Reservation)[449]
      private 'id' => null
      private 'nom' => null
      private 'idChambre' => null
private 'normData' => 
    object(testBundle\Entity\Reservation)[449]
      private 'id' => null
      private 'nom' => null
      private 'idChambre' => null
 private 'viewData' => 
    object(testBundle\Entity\Reservation)[449]
      private 'id' => null
      private 'nom' => null
      private 'idChambre' => null
private 'extraData' => 
    array (size=21)
      'nom' => string 'a' (length=1)
      'idChambre' => string '2' (length=1)
Mon controller qui récupère ces données :
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
24
25
26
27
28
29
30
$reservation = new Reservation();
 
$form_reservation_builder = $this->createFormBuilder($reservation);
 
$form_reservation = $form_reservation_builder->getForm();
 
$form_reservation->handleRequest($request);
var_dump($form_reservation);
 
$form_extradata = $form_reservation->getExtraData();
$id_chambre = $form_extradata['idChambre'];
$id_chambre = intval($id_chambre);
var_dump($id_chambre);
 
$form_reservation_builder->add('nom', TextType::class, array('label' => 'nom', 'attr' => array('readonly' => true)))
    ->add('idChambre', EntityType::class, array(
                'label'        => 'chambre', 
                'placeholder'  => false,
                'class'        => 'testBundle:Chambre',
                'choice_label' => 'nom',
                'query_builder' => function (EntityRepository $er) use ($id_chambre) {
                    return $er->createQueryBuilder('c')
                        ->where('c.id = :id_chambre')->setParameter('id_chambre', $id_chambre);
                    }
		'attr' => array('readonly' => true)
                ));
 
if ($request->isMethod('POST') && $form_reservation->isValid()) {
	//...
}