Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment organiser mon CRUD Form ?

    16 février 2024 à 21:46:45

    Bonjour, je souhaite mettre en place un formulaire en trois étapes pour la création d'articles.

    Il y aura trois entités : Catégorie, Sous-catégorie et Article. Le processus consistera à créer un article en trois étapes :

    • Première étape :
      • Un menu déroulant avec les catégories existantes.
      • Un champ de saisie pour créer une nouvelle catégorie.
      • Instructions : Sélectionnez une catégorie existante ou saisissez le titre d'une nouvelle catégorie.
    • Deuxième étape :
      • Un menu déroulant avec les sous-catégories existantes associées à la catégorie sélectionnée dans la première étape.
      • Un champ de saisie pour créer une nouvelle sous-catégorie.
      • Instructions : Sélectionnez une sous-catégorie existante ou saisissez le titre d'une nouvelle sous-catégorie.
    • Dernière étape :
      • Un champ pour le titre de l'article.
      • Un espace de contenu de type zone de texte (textarea), déjà fonctionnel à 100%.

    Le but est de choisir une catégorie, puis une sous-catégorie liée à cette catégorie, et enfin de lier l'article à la sous-catégorie sélectionnée.

    En gros, en base de données, je souhaite avoir une structure où chaque article est associé à une sous-catégorie, qui elle-même est associée à une catégorie.

    Comment puis-je mettre cela en place, s'il vous plaît ? J'ai déjà créé deux autres entités, Catégorie et Sous-catégorie, et je dois mettre en place le formulaire pour chacune.

    Est-ce que je peux gérer cela avec un seul contrôleur ? J'ai déjà mis en place les opérations CRUD (Create, Read, Update, Delete) pour mes articles.

    Merci d'avance !

    <?php
    
    namespace App\Controller;
    
    use App\Entity\Article;
    use App\Form\ArticleType;
    use App\Entity\Categorie;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\Routing\Annotation\Route;
    use Doctrine\Persistence\ManagerRegistry;
    
    class ArticleController extends AbstractController
    {
    
        #[Route("/article/new", name: "article_new", methods: ["GET", "POST"])]
        public function new(Request $request, ManagerRegistry $doctrine): Response
        {
            $article = new Article;
            $formArticle = $this->createForm(ArticleType::class, $article);
        
            $formArticle->handleRequest($request);
            
            if ($formArticle->isSubmitted() && $formArticle->isValid()) {
        
                // dd($request);
                $entityManager = $doctrine->getManager();
                $entityManager->persist($article);
                $entityManager->flush();
        
                return $this->redirectToRoute('article_list');
            }
        
            return $this->render('article/form-new.html.twig', [
                'formArticle' => $formArticle->createView(),
            ]);
        }
    
        #[Route("/article/edit/{id}", name: "article_edit", methods: ["GET", "POST"])]
        public function edit($id, ManagerRegistry $doctrine, Request $request): Response
        {
            $article = $doctrine->getRepository(Article::class)->find($id);
    
            $formArticle = $this->createForm(ArticleType::class, $article);
    
            $formArticle->handleRequest($request);
    
    
            if ($formArticle->isSubmitted() && $formArticle->isValid()) {
                $entityManager = $doctrine->getManager();
                $entityManager->flush();
    
                return $this->redirectToRoute('article_list');
            }
    
            return $this->render('article/form-edit.html.twig', [
                'formArticle' => $formArticle->createView(),
    
            ]);
        }
    
       
    
     
    
    
        #[Route("/article/delete/{id}", name: "article_delete")]
        public function delete($id, ManagerRegistry $doctrine): Response
        {
            $entityManager = $doctrine->getManager();
            $article = $doctrine->getRepository(Article::class)->find($id);
    
            if (!$article) {
                throw $this->createNotFoundException('Article not found');
            }
    
            $entityManager->remove($article);
            $entityManager->flush();
    
            return $this->redirectToRoute('article_list');
        }
    
    
    
        #[Route("/article/list", name: "article_list")]
        public function readAll(ManagerRegistry $doctrine)
        {   
            $articles = $doctrine->getRepository(Article::class)->findAll();
    
            return $this->render("article/list.html.twig", [
                "articles" => $articles
            ]);
        }
    
    
        #[Route("/article/{id}", name: "article_detail")]
        public function detail($id, ManagerRegistry $doctrine): Response
        {
            $article = $doctrine->getRepository(Article::class)->find($id);
    
            if (!$article) {
                throw $this->createNotFoundException('Article not found');
            }
    
            return $this->render('article/item.html.twig', [
                'article' => $article
            ]);
        }
    
        #[Route("/articles", name: "articles")]
        public function articles(ManagerRegistry $doctrine): Response
        {
            $articles = $doctrine->getRepository(Article::class)->findAll();
    
            return $this->render('article/articles.html.twig', [
                'articles' => $articles
            ]);
        }
    
    
    
    
    }



    • Partager sur Facebook
    • Partager sur Twitter

    Comment organiser mon CRUD Form ?

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