Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony] exporter données formulaire à dompdf

formulaire collection et dompdf

    31 janvier 2023 à 13:55:25

    Bonjour , depuis quelque jours je suis bloqué, si quelqu'un peut m'aider avec la bonne pratique, j'explique :

    Je veux récupérer des données dans la base données : entité (expression_besoin) contient les informations d'une demande avec ref , demandeur ... et l'entité besoin_article contient les articles demandé dans l'entité précédente, il y une relation OneToMany entre les deux entité.

    l'objectif c'est de récupérer les plusieurs expression besoin d'articles dans un formulaire afin de modifier si il faut les quantité ou les supprimer , ensuite pouvoir générer un fichier PDF qui contient toutes les besoins et les articles qui leur correspond.

    Jusqu'à la je récupère mes données sans problème, les getData() du formulaire contient toutes mes données, mais quand je valide pour générer mon fichier pdf , il ne contient pas toutes les données. j'utilise un système de filtre qui me permets de selection les expression de besoin entre deux dates, par demandeur ou par fournisseur, et le problème est lié à ce filtre car quand je génère le pdf des données sans filtre ça fonctionne mais quand je filtre mes données c'est là où mes données change et je ne récupère pas les données filtrés , je serai reconnaissant si quelqu'un me débloque ou me dire d'où le problème provient : 

    le controller :

    /**
         * @Route("/extraire_commandes", name="export_commandes", methods={"GET","POST"})
         */
        public function exportCommandes(ExBesoinRepository $exBesoinRepository, Request $request): Response
        {        
            $datas = new FiltreBesoin();
            $form = $this->createForm(FiltreBesoinType::class, $datas);
            $form->handleRequest($request);
            $exBesoin = $exBesoinRepository->exportCommande($datas);     
            $valueFournisseur = $form['fournisseur']->getData();
            
            $formExport = $this->createFormBuilder(array('besoin' => $exBesoin));
            $formExport->add('besoin', CollectionType::class, array(
                'entry_type' => ExBesoinToCommandeType::class,   
            ));
            
            $formExport = $formExport->getForm();
            $formExport->handleRequest($request);            
            $formValue = $formExport->getData();
            if ($formExport->isSubmitted() && $formExport->isValid()) {
                
                $html = $this->renderView('admin/besoins/epicerie/exportPdf.html.twig', [
                    'besoins' => $formValue,
                ]);
                $html .= '<link rel="stylesheet" href="/build/css/app.css"> ';
                $html .= '<script src="/build/vendors~js/app.js"></script><script src="/build/runtime.js"></script><script src="/build/vendors-node_modules_popperjs_core_lib_index_js-node_modules_symfony_stimulus-bridge_dist_ind-f4bfca.js"></script>';
                $name = 'test';
                $options = new Options();
                $options->set('isHtml5ParserEnabled', true);
                $options->set('isRemoteEnabled', true); 
                $dompdf = new Dompdf($options);
                $dompdf->loadHtml($html);
                // (Optional) Setup the paper size and orientation
                $dompdf->setPaper('A4', 'portrait');
                // Render the HTML as PDF
                $dompdf->render();
                // Output the generated PDF to Browser
                $dompdf->stream($name, array('Attachment' => 0));
                return new Response('', 200, [
                    'Content-Type' => 'application/pdf',
                ]);
            }
                          
            return $this->render('admin/besoins/epicerie/export.html.twig', [
                'besoins' => $exBesoin,
                'form' => $form->createView(),
                'valueFournisseur' => $valueFournisseur,
                //'idBesoin' => $idBesoin,
                'formExport' => $formExport->createView(),
                'valu'=> $formValue
            ]);
        }


    mes Form :

    ExBesoinToCommandeType 
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('besoinArs', CollectionType::class, [
                    'entry_type' => BesoinArToCommandeType::class,                
                    'allow_delete' => true,
                    //'allow_add' => false,
                    'prototype'    => true,
                    'by_reference' => false,
                    'delete_empty' => true,
                    'entry_options' => [
                        'label' => true,
                    ]
                ])           
            ;
        }
    BesoinArToCommandeType 
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('article', EntityType::class, [
                    'class' => Article::class,
                    'label' => false,
                    'attr' =>[
                        'class' => 'arSelect form-control-sm',
                        'data-live-search' => 'true',
                    ],
                    'placeholder' => 'Selectionner un article ',
                    'query_builder' => function (EntityRepository  $er) {
                        $qb = $er->createQueryBuilder('a')
                        ->innerJoin('a.category', 'c')
                        ->where('c.is_legume = 0')
                        ;                         
                        return $qb;
                    },
                    'group_by' => function (Article $article) {
                        return $article->getCategory()->getLibele();
                    }
                ])
                ->add('quantity', TextType::class, [
                    'label' => ' ',
                    'attr' =>[
                        'class' => 'quantity form-control-sm'
                    ]
                ])
            ;
        }

    je vous remercie d'avance


    • Partager sur Facebook
    • Partager sur Twitter
      31 janvier 2023 à 19:53:23

      Je connais pas suffisamment bien Symfony et son système de filtre, mais tu devrais vérifier via un dump ou autre que tu reçois correctement les dates que tu as saisies dans ta vue.

      Et les dates nécessitent souvent un "formatage" avant d'être passées dans des requêtes, même avec un ORM. Si dans tes filtres tu as mis directement en brut une date au format français, c'est normal que cela ne te retourne rien...

      Après le problème provient peut être pas de là, mais c'est des 1ère pistes de recherche

      • Partager sur Facebook
      • Partager sur Twitter

      [Symfony] exporter données formulaire à dompdf

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown