Ci-dessous, les différences entre deux révisions de la page.
| 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 07:28] julien.guerin |
symfony_4:fonctionnement:les_controleurs_preparation_des_donnees [2019/12/08 07:41] (Version actuelle) |
||
|---|---|---|---|
| Ligne 26: | Ligne 26: | ||
| * index (listing, page d' | * index (listing, page d' | ||
| * 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-> | $manager = $this-> | ||
| | | ||
| + | // | ||
| $user = $manager-> | $user = $manager-> | ||
| Ligne 83: | Ligne 86: | ||
| $manager = $this-> | $manager = $this-> | ||
| - | //retrait du User | + | //retrait du User, directement récupéré via l' |
| $manager-> | $manager-> | ||
| $manager-> | $manager-> | ||
| Ligne 90: | Ligne 93: | ||
| } | } | ||
| </ | </ | ||
| - | + | ||
| - | === Exemple === | + | |
| + | |||
| + | **Remarque :** Les arguments passés à une méthode Symfony ne sont pas forcement des variables conventionnelles. | ||
| + | |||
| + | **Exemple :** La variable $mailer de type / | ||
| + | |||
| + | ---- | ||
| + | |||
| + | === Exemple | ||
| <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 / | + | |
| ==== 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' |
| + | * 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' |
| - | { | + | |
| + | == Exemple == | ||
| + | <code PHP> | ||
| /** | /** | ||
| * Display SWFile list in tab | * Display SWFile list in tab | ||
| * | * | ||
| - | * @param Request $request | + | * @Route("/ |
| + | * | ||
| * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response | * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response | ||
| - | * | ||
| - | * @Route("/ | ||
| */ | */ | ||
| public function index(Request $request) | public function index(Request $request) | ||
| Ligne 147: | Ligne 154: | ||
| )); | )); | ||
| } | } | ||
| + | </ | ||
| - | /** | + | ---- |
| - | * Add a SWFile | + | |
| - | * | + | |
| - | * @Route("/ | + | |
| - | * | + | |
| - | * @IsGranted(" | + | |
| - | * | + | |
| - | * @param Request $request | + | |
| - | * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response | + | |
| - | */ | + | |
| - | public function add( Request $request ) | + | |
| - | { | + | |
| - | $SWFile = new SWFile(); | + | |
| - | $form = $this-> | + | |
| - | $form-> | + | === Envoi en AJAX === |
| - | if ($form-> | + | Pour retourner un JSON, on créer un tableau et on retourne un objet JsonResponse. |
| - | // $form-> | + | |
| - | // but, the original `$task` variable has also been updated | + | |
| - | $SWFile = $form-> | + | |
| - | //MAJ des champs non disponibles sur le formulaire | + | <code PHP> |
| - | $SWFile->setCreationDate(new | + | use Symfony\Component\HttpFoundation\JsonResponse; |
| - | | + | use Symfony\Component\HttpFoundation\Response; |
| - | // | + | ... |
| - | $manager | + | |
| - | $manager->persist($SWFile); | + | |
| - | $manager->flush(); | + | |
| + | ' | ||
| + | )); | ||
| + | |||
| + | $json_array = array( | ||
| + | | ||
| + | ' | ||
| + | | ||
| - | | + | $response = new JsonResponse(); |
| - | } | + | |
| + | </ | ||
| - | return $this-> | + | ---- |
| - | ' | + | |
| - | )); | + | |
| - | } | + | |
| - | | + | === Redirection vers une route === |
| - | | + | |
| + | Pour rediriger vers une méthode précise, on redirige vers la route associée à celle-ci via la méthode : | ||
| + | <code PHP> | ||
| + | $this-> | ||
| + | </ | ||
| + | |||
| + | <code PHP> | ||
| + | /** | ||
| + | | ||
| * | * | ||
| - | * @Route("/ | + | * @Route("/ |
| * | * | ||
| - | * @IsGranted(" | + | * @IsGranted(" |
| * | * | ||
| * @param Request $request | * @param Request $request | ||
| - | * @param SWFile $SWFile | ||
| * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response | * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response | ||
| */ | */ | ||
| - | public function | + | public function |
| { | { | ||
| + | $SWFile = new SWFile(); | ||
| $form = $this-> | $form = $this-> | ||
| Ligne 205: | Ligne 210: | ||
| if ($form-> | if ($form-> | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | + | //redirection vers la liste des swfiles après l' | |
| - | //MAJ des champs non disponibles sur le formulaire | + | |
| - | $SWFile-> | + | |
| - | $SWFile-> | + | |
| - | + | ||
| - | // | + | |
| - | $manager = $this-> | + | |
| - | $manager-> | + | |
| - | $manager-> | + | |
| return $this-> | return $this-> | ||
| } | } | ||
| - | + | | |
| - | | + | ... |
| - | ' | + | |
| - | | + | |
| } | } | ||
| + | </ | ||
| - | /** | + | ---- |
| - | * Delete a SWFile (not the file, just the database slot | + | |
| - | * | + | |
| - | * @Route("/ | + | |
| - | * | + | |
| - | * @IsGranted(" | + | |
| - | * | + | |
| - | * @param Request $request | + | |
| - | * @param SWFile $SWFile | + | |
| - | * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response | + | |
| - | */ | + | |
| - | public function delete(Request $request, SWFile $SWFile) | + | |
| - | { | + | |
| - | $manager = $this-> | + | |
| - | //retrait du SWFile | ||
| - | $manager-> | ||
| - | $manager-> | ||
| - | |||
| - | return $this-> | ||
| - | } | ||
| - | |||
| - | } | ||
| - | </ | ||