Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sauvegarde des données d'un formulaire symfony

Sujet résolu
    15 septembre 2020 à 2:16:09

    Bonjour à toutes et à tous

    Je suis en train de créer une page contenant un formulaire via Symfony.

    La partie formulaire fonctionne .

    Mais quand j'ajoute la partie sauvegarde des données dans la base donné, j'ai une message d'erreur.

    J'ai  tester l'enregistrement dans la base de donnée via une fixture sa marche.

    Le message d'erreur me dit que le service "Doctrine\Persistence\ObjectManager" n’existe pas. j'ai suivie un tuto a la lettre ça ne change rien.

    Voici mon code car je trouve pas l'erreur

    <?php
    
    namespace App\Controller;
    
    use App\Entity\BugReport;
    use Doctrine\Persistence\ObjectManager;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Routing\Annotation\Route;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    
    class WebsiteBaseController extends AbstractController
    {
        /**
         * @Route("/", name="home")
         */
        public function home()
        {
            return $this->render('website_base/home.html.twig', [
                'current_menu' => 'home',
                'title_name' => 'Accueil',
            ]);
        }
        /**
         * @Route("/contact_us", name="contact_us")
         */
        public function contactus()
        {
            return $this->render('website_base/contact_us.html.twig', [
                'current_menu' => 'contact_us',
                'title_name' => 'Nous contacter',
            ]);
        }
        /**
         * @Route("/report_bug", name="report_bug")
         */
        public function reportbug(Request $request, ObjectManager $manager)
        {
            $reportbug = new BugReport();
    
            $form = $this->createFormBuilder($reportbug)
                         ->add('Author')
                         ->add('Email')
                         ->add('Content')
                         ->add('AttachedFiles')
                         ->getForm();
            
            $form->handleRequest($request);
            if ($form->isSubmitted() && $form->isValid()) {
                $reportbug ->setCreatedAt(new \DateTime());
    
                $manager->persist($reportbug);
                $manager->flush();
            }
    
            return $this->render('website_base/report_bug.html.twig', [
                'current_menu' => 'report_bug',
                'form_bugreport' => $form->createView(),
                'title_name' => 'Signaler un bug',
            ]);
        }
        /**
         * @Route("/system_information", name="system_information")
         */
        public function systeminformation()
        {
            return $this->render('website_base/system_information.html.twig', [
                'current_menu' => 'system_information',
                'title_name' => 'Informations système',
            ]);
        }
    }
    

    Un œil extérieur verra sans doute le problème. Merci d'avance pour votre aide

    • Partager sur Facebook
    • Partager sur Twitter
    m.g.webmaster
      15 septembre 2020 à 6:54:17

      Bonjour,

      Ligne 49 il semble y avoir un espace qu'il vaudrait mieux enlever.

      Je ne sais quel tuto tu as suivi et pour quelle version de Symfony mais la pratique est plutôt d'injecter dans la classe l'entity manager et ensuite de l'utiliser.

      A+

      • Partager sur Facebook
      • Partager sur Twitter
        15 septembre 2020 à 19:16:36

        Bonjour monkey3d,

        J'ai corriger la ligne 49. Mais c'est pareil. Je suis le tutoriel suivant

        https://youtu.be/_cgZheTv-FQ

        J'utilise le framework "Synfony 5"

        Tu entent quoi par "mais la pratique est plutôt d'injecter dans la classe l'entity manager et ensuite de l'utiliser" ?

        • Partager sur Facebook
        • Partager sur Twitter
        m.g.webmaster
          16 septembre 2020 à 7:03:00

          1) le tuto que tu suis est pour une version 4 ... alors certes il n'y a pas encore trop de différences mais tu ferais mieux de suivre des tutos pour la 5.

          2) Exemple ci-dessous d'injection : c'est un mécanisme courant qu'il faut utiliser. Anciennement on prenait tout le container là on injecte seulement ce que l'on a besoin.

          use Doctrine\ORM\EntityManagerInterface;
          // injection dans la classe
          public function __construct(
              EntityManagerInterface $entityManager,
          )
          {
              $this->entityManager = $entityManager;
          }
          
          ......
          // usage dans une action d'un contrôleur
          $this->entityManager->persist($object);
          $this->entityManager->flush();

          A+

          • Partager sur Facebook
          • Partager sur Twitter
            16 septembre 2020 à 19:37:38

            D'accord je vais essayer de trouver des tutoriel pour symfony 5

            Je vais essayer d'approfondir EntityManagementInterface

            Mise à jour:

            Grand merci à toi monkey3d

            Mon problème est résolu

            -
            Edité par guillardmarc44 16 septembre 2020 à 21:12:33

            • Partager sur Facebook
            • Partager sur Twitter
            m.g.webmaster

            Sauvegarde des données d'un formulaire symfony

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown