Outils pour utilisateurs

Outils du site


symfony_4:fonctionnement:les_controleurs_preparation_des_donnees

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
symfony_4:fonctionnement:les_controleurs_preparation_des_donnees [2018/10/19 09:28]
julien.guerin
symfony_4:fonctionnement:les_controleurs_preparation_des_donnees [2019/12/08 08:41] (Version actuelle)
Ligne 26: Ligne 26:
   * index (listing, page d'accueil, etc.)   * index (listing, page d'accueil, etc.)
   * add   * add
-  * edit+  * update
   * delete   * delete
  
 Pour les autres, essayé d'en inventé un, en anglais, qui est assez évocateur. Pour les autres, essayé d'en inventé un, en anglais, qui est assez évocateur.
 +
 +----
  
 ==== Arguments ==== ==== Arguments ====
Ligne 59: Ligne 61:
         $manager = $this->getDoctrine()->getManager();         $manager = $this->getDoctrine()->getManager();
                  
 +        //Récupération de l'utilisateur via l'id
         $user = $manager->getRepository(User::class)->findOneBy( array('id' => $id) );         $user = $manager->getRepository(User::class)->findOneBy( array('id' => $id) );
  
Ligne 83: Ligne 86:
         $manager = $this->getDoctrine()->getManager();         $manager = $this->getDoctrine()->getManager();
  
-        //retrait du User+        //retrait du User, directement récupéré via l'appel automatique de findOneBy() par le framework
         $manager->remove($user);         $manager->remove($user);
         $manager->flush();         $manager->flush();
Ligne 90: Ligne 93:
     }     }
 </code> </code>
-  + 
-=== Exemple ===+ 
 + 
 +**Remarque :** Les arguments passés à une méthode Symfony ne sont pas forcement des variables conventionnelles. 
 + 
 +**Exemple :** La variable $mailer de type /SwiftMailer ou $request de type Request permettent d'accéder au contenu de la requête ou de définir le service de mail, nécessaire à l'envoi de mail. 
 + 
 +---- 
 + 
 +=== Exemple d'arguments sur une méthode ===
 <code PHP> <code PHP>
 /** /**
Ligne 108: Ligne 119:
  
  
-**Remarque :** Les arguments passés à une méthode Symfony ne sont pas forcement des variables conventionnelles. +---- 
-**Exemple :** La variable $mailer de type /SwiftMailer ou $request de type Request permettent d'accéder au contenu de la requête ou de définir le service de mail, nécessaire à l'envoi de mail.+
  
 ==== Retours ==== ==== Retours ====
  
-===== Exemple ===== +Il existe plusieurs type de réponses de la part d'un contrôleur : 
-<code PHP> +  * Affichage d'une vue 
-<?php+  * Réponse en JSON (pour l'ajax, par exemple) 
 +  * Re-direction vers une route spécifique
  
-namespace App\Controller;+----
  
-use App\Entity\SWFile; +=== Affichage d'une vue (TWIG) ===
-use App\Form\SWFileType; +
-use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; +
-use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; +
-use Symfony\Bundle\FrameworkBundle\Controller\Controller; +
-use Symfony\Component\HttpFoundation\Response; +
-use Symfony\Component\HttpFoundation\Request;+
  
-class SWFileController extends Controller +Pour retourner une vue, il suffit d'appeler la méthode $this->render() 
-{+ 
 +== Exemple == 
 +<code PHP>
     /**     /**
      * Display SWFile list in tab      * Display SWFile list in tab
      *      *
-     * @param Request $request+     * @Route("/SWFile/", name="swfile"
 +     *
      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
-     * 
-     * @Route("/SWFile/", name="swfile") 
      */      */
     public function index(Request $request)     public function index(Request $request)
Ligne 147: Ligne 154:
         ));         ));
     }     }
 +</code>
  
-    /** +----
-     * Add a SWFile +
-     * +
-     * @Route("/ServiceWorker/add", name="swfile_add"+
-     * +
-     * @IsGranted("ROLE_ADMIN", statusCode=404, message="Accès refusé !") +
-     * +
-     * @param Request $request +
-     * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response +
-     */ +
-    public function add( Request $request ) +
-    { +
-        $SWFile = new SWFile(); +
-        $form = $this->createForm(SWFileType::class, $SWFile);+
  
-        $form->handleRequest($request);+=== Envoi en AJAX ===
  
-        if ($form->isSubmitted() && $form->isValid()) { +Pour retourner un JSONon créer un tableau et on retourne un objet JsonResponse.
-            // $form->getData() holds the submitted values +
-            // butthe original `$task` variable has also been updated +
-            $SWFile = $form->getData();+
  
-            //MAJ des champs non disponibles sur le formulaire +<code PHP> 
-            $SWFile->setCreationDate(new \DateTime("now") )+use Symfony\Component\HttpFoundation\JsonResponse
-            $SWFile->setEditDate(new \DateTime("now") );+use Symfony\Component\HttpFoundation\Response;
  
-            //Application des modifs en BDD +  ... 
-            $manager = $this->getDoctrine()->getManager(); +   
-            $manager->persist($SWFile); +  $modalBarge = $this->renderView('ajax:modalXXX.html.twig', array
-            $manager->flush();+            'tabBargesToday' => $tabBargesToday, 
 +            'tabBarges' => $tabBarges 
 +        )); 
 +         
 +  $json_array = array( 
 +            'error' => $error, 
 +            'modal' =$modalBarge 
 +        );
  
-            return $this->redirectToRoute('swfile_add'); +  $response = new JsonResponse(); 
-        }+  return $response->setData($json_array); 
 +</code>
  
-        return $this->render('SWFile/newSW.html.twig', array( +----
-            'form' => $form->createView(), +
-        )); +
-    }+
  
-    /** +=== Redirection vers une route === 
-     Edit a SWFile+ 
 +Pour rediriger vers une méthode précise, on redirige vers la route associée à celle-ci via la méthode : 
 +<code PHP> 
 +$this->redirectToRoute('swfile'); 
 +</code> 
 + 
 +<code PHP> 
 + /** 
 +     Add a SWFile
      *      *
-     * @Route("/SWFile/edit/{sw}", name="swfile_edit", requirements={"sw"="\d+"})+     * @Route("/ServiceWorker/add", name="swfile_add")
      *      *
-     * @IsGranted("ROLE_ADMIN", statusCode=404, message="Accès refusé !")+     * @IsGranted("ROLE_ADMIN", statusCode=404, message="Accès réservé aux administrateurs !")
      *      *
      * @param Request $request      * @param Request $request
-     * @param SWFile $SWFile 
      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
      */      */
-    public function edit(Request $request, SWFile $SWFile)+    public function add( Request $request )
     {     {
 +        $SWFile = new SWFile();
         $form = $this->createForm(SWFileType::class, $SWFile);         $form = $this->createForm(SWFileType::class, $SWFile);
  
Ligne 205: Ligne 210:
  
         if ($form->isSubmitted() && $form->isValid()) {         if ($form->isSubmitted() && $form->isValid()) {
-            // $form->getData() holds the submitted values +             
-            // but, the original `$task` variable has also been updated +            ... 
-            $SWFile = $form->getData(); +             
- +            //redirection vers la liste des swfiles après l'ajout
-            //MAJ des champs non disponibles sur le formulaire +
-            $SWFile->setCreationDate(new \DateTime("now") ); +
-            $SWFile->setEditDate(new \DateTime("now") ); +
- +
-            //Application des modifs en BDD +
-            $manager = $this->getDoctrine()->getManager(); +
-            $manager->persist($SWFile); +
-            $manager->flush(); +
             return $this->redirectToRoute('swfile');             return $this->redirectToRoute('swfile');
         }         }
- +         
-        return $this->render('SWFile/newSW.html.twig', array( +        ... 
-            'form' => $form->createView(), +        
-        ));+
     }     }
 +</code>
  
-    /** +----
-     * Delete a SWFile (not the file, just the database slot +
-     * +
-     * @Route("/SWFile/delete/{sw}", name="swfile_delete", requirements={"sw"="\d+"}) +
-     * +
-     * @IsGranted("ROLE_ADMIN", statusCode=404, message="Accès refusé !") +
-     * +
-     * @param Request $request +
-     * @param SWFile $SWFile +
-     * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response +
-     */ +
-    public function delete(Request $request, SWFile $SWFile) +
-    { +
-        $manager = $this->getDoctrine()->getManager();+
  
-        //retrait du SWFile 
-        $manager->remove($SWFile); 
-        $manager->flush(); 
- 
-        return $this->redirectToRoute('swfile'); 
-    } 
- 
-} 
-</code> 
symfony_4/fonctionnement/les_controleurs_preparation_des_donnees.1539934080.txt.gz · Dernière modification: 2019/12/08 08:43 (modification externe)