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:38]
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 91: 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 109: 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 ====
Ligne 119: Ligne 128:
   * Réponse en JSON (pour l'ajax, par exemple)   * Réponse en JSON (pour l'ajax, par exemple)
   * Re-direction vers une route spécifique   * Re-direction vers une route spécifique
-  * Un code HTML ( 200, 404, 500 )+ 
 +----
  
 === Affichage d'une vue (TWIG) === === Affichage d'une vue (TWIG) ===
  
-=== Envoi en AJAX ===+Pour retourner une vue, il suffit d'appeler la méthode $this->render()
  
-=== Redirection vers une route === +== Exemple ==
- +
-=== Code HTML === +
- +
- +
- +
- +
-==== Exceptions ==== +
- +
- +
-==== Flash message ==== +
- +
- +
- +
-===== Exemple =====+
 <code PHP> <code PHP>
-<?php 
- 
-namespace App\Controller; 
- 
-use App\Entity\SWFile; 
-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 
-{ 
     /**     /**
      * Display SWFile list in tab      * Display SWFile list in tab
      *      *
      * @Route("/SWFile/", name="swfile")      * @Route("/SWFile/", name="swfile")
-      +     *
-     * @IsGranted("ROLE_ADMIN", statusCode=404, message="Accès refusé !") +
-     *  +
-     * @param Request $request+
      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
      */      */
Ligne 175: 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 233: 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.1539934704.txt.gz · Dernière modification: 2019/12/08 08:43 (modification externe)