Modifier une entité imbriquée dans un formulaire.
Bonjour,
J'ai un soucis avec un formulaire.
J'ai un objet pays qui est relié à à un ojet "non", un objet "classement" et un "objet initiale" avec la relation OneToMany.
Mon formulaire pour créer mon pays avec les sous-objets fonctionne avec ce code dans mon controleur.
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43
|
public function ajouter_paysAction()
{
$pays = new Pays();
$initiale = new PaysHistoriqueInitiale();
$nom = new PaysHistoriqueNom();
$nomclassement = new PaysHistoriqueNomClassement();
$pays->addInitiale($initiale);
$pays->addNom($nom);
$pays->addNomclassement($nomclassement);
$initiale->setPays($pays);
$nom->setPays($pays);
$nomclassement->setPays($pays);
$form = $this->createForm(new PaysType, $pays);
$request = $this->get('request');
if( $request->getMethod() == 'POST' )
{
$form->bind($request);
if( $form->isValid() )
{
$em = $this->getDoctrine()->getEntityManager();
$em->persist($pays);
$em->flush($pays);
return $this->redirect($this->generateUrl('geo_voir_pays',
array('id_pays' => $pays->getId())));
} |
Pas de soucis tout fonctionne bien.
Par contre, je n'arrive pas à faire des modification sur le pays.
J'ai le code suivant :
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
public function editer_paysAction($id_pays)
{
$pays = $this->getDoctrine()
->getManager()
->getRepository('OpengenGeoBundle:Pays')
->find($id_pays);
$form = $this->createForm(new PaysType, $pays);
$request = $this->get('request');
if( $request->getMethod() == 'POST' )
{
$form->bind($request);
if( $form->isValid() )
{
$em = $this->getDoctrine()->getEntityManager();
$em->persist($pays);
$em->flush($pays);
return $this->redirect($this->generateUrl('geo_voir_pays',
array('id_pays' => $pays->getId())));
}
}
return $this->render('OpengenGeoBundle:Geo:ajouter_pays.html.twig',
array(
'form' => $form->createView(),
)
);
} |
Le formulaire se charge très bien avec les champs pré-remplis, mais quand je valide, rien n'est pris un compte : la fiche du pays est afichée mais les modifications ne sont pas passées. Rien en BDD.
Si je fais un
Code:
1 2 3 4 5
| if( $form->isValid() )
{
var_dump($pays);
die(); |
Je vois que les modifications n'ont pas été apportées à l'objet....
Il ya un truc qui m'échappe là :-(
Si quelqu'un voit le hic je prends :-)