Bonjour,

L'enregistrement d'une annonce se fait via 2 formulaire successifs : l'un permettant d'encoder les différents élements qui doivent se trouver dans l'annonce et l'autre les différents prix qui y sont liés. Ces deux formulaires sont basés sur la même entité "Advert".

Lors d'un passage d'un formulaire à l'autre, je n'enregistre rien en base de données. ce n'est qu'à la soumission du second que je désire tout enregistrer. Pour se faire, je fais comme ceci :

...
$form = $this->createForm(AdvertType::class, $advert);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) 
        {
        ...
        //New form with prices only

                    $formPrices = $this->createForm(PricesAdvertType::class, $advert);
                    $formPrices->handleRequest($request);                    

                    **if ($formPrices->isSubmitted() && $formPrices->isValid()) around                    {around                        echo "ok";**
                        /*$prices = $advert->getPricess();           

                        foreach ($prices as $price) 
                        {

                            $price->addAdvert($advert);

                        }

                        $manager->persist($advert);
                        $manager->flush();*/

                    }

                    return $this->render('road_trip/**createPricesAdvert.html.twig'**, ['formPricesAdvert' => $formPrices->createView(), 'editMode' => $advert->getId() !== null]);

            }
        }

        return $this->render('road_trip/createAdvert.html.twig', ['formAdvert' => $form->createView(), 'editMode' => $advert->getId() !== null]);        
    }

Mon problème est que jamais l'echo ne s'effectue jamais, comme si la condition if retournait false, même si je retire le isValid(). Je reviens d'ailleurs à mon formulaire d'encodage d'une nouvelle annonce, ce qui correspond au second retour avec le template createAdvert.html.twig.

Je ne comprends pas d'où peut provenir mon problème. Quelqu'un aurait une idée?

Merci d'avance pour votre aide.

Aucune réponse