Bonjour à tous,

Tout est dans le titre : je voudrais pouvoir vérifier qu'un premier formulaire soit valide avant de faire appel à un autre, or, apparament on ne peut pas réutiliser les méthodes d'un controller dans un autre ???

Dans mon cas j'essaie de récupérer le boolean isValid de mon formulaire 1 (creerFacture()) avant d'ouvrir celui de la création de lignes de factures (creerLigne()) qui est indépendant / non imbriqué...

Faut il obligatoirement passer par un service ?

D'autre part, j'aurais besoin que la variable 'numdocument' soit directement injectée dans le form 2.

Merci pour votre aide.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//Créer une facture
    #[Route('/creer-facture', name: 'creer-facture')]
    public function creerFacture(EcrituresRepository $ecrituresRepository, EntityManagerInterface $em, Request $request): Response
    {
        $titre = "Créer une facture";
        $ecriture = (new Ecritures());
        $numdocument = $ecrituresRepository->getNouveauNumeroFacture();
 
 
        $ecriture
            ->setNumDocument($numdocument)
            ->setDateDocument(new \DateTimeImmutable())
            ->setTypeDocument('Facture')
            ->setEtatDocument('En création');
 
        $formEcritures = $this->createForm(EcrituresType::class, $ecriture);
        $formEcritures->handleRequest($request);
 
        if ($formEcritures->isSubmitted() && $formEcritures->isValid()) {
            $em->persist($ecriture);
            $em->flush();
 
            $this->addFlash('success', 'La nouvelle facture a été enregistrée avec succès dans la base.');
        }
 
        return $this->render('ecritures/ecritures-form.html.twig', [
            'formEcritures' => $formEcritures->createView(),
            'titre' => $titre
        ]);
    }
 
    //Creer des ligne de factures
    #[Route('/creer-lignes-facture',name:'creer-lignes-facture')]
    public function creerLigne(EntityManagerInterface $em,Request $request):Response{
 
        //Vérification données du formulaire écritures avant ajout de ligne de détails
        if ($this->formEcritures->isValid()) {
            $ligne = new DetailsEcritures();
                $ligne
                ->setNumDocument($this->$numdocument);
 
                $formCreerLignes=$this->createForm(DetailsEcrituresType::class,$ligne);
                $formCreerLignes->handleRequest($request);
 
                if($formCreerLignes->isSubmitted()&& $formCreerLignes->isValid()){
                    $em->persist($ligne);
                    $em->flush();
                }
                    return $this->render('ecritures/details-ecritures-form.html.twig',[
                        'formCreerLignes'=>$formCreerLignes->createView()
                    ]);
            ;
        } else {
            return new Exception("Veuillez au préalable remplir tous les champs obligatoires...");
        }
    }