Formation PUB030 : Laravel, 2019 La redirection

26.1 Les fonctions de redirection


Laravel offre tous les outils nécessaires pour effectuer une direction vers une autre page Web, que ce soit à l'aide de la fonction d'aide redirect() ou de la fonction d'aide back().

▼Publicité Le texte se poursuit plus bas

Fonction redirect()

La fonction redirect() peut recevoir un paramètre pour lui indiquer à quel endroit elle doit effectuer la redirection.

Ce paramètre sera un URL relatif (ex : produits) ou absolu (ex : http://mondomaine.com/produits). La méthode d'action correspondant à cet URL, tel que précisé dans les routes, sera alors exécutée.

Par exemple, pour retourner à la liste des produits dont l'URL est http://mondomaine.com/produits :

Contrôleur Laravel (PHP)

return redirect('produits');

Pour retourner à la page d'accueil :

Contrôleur Laravel (PHP)

return redirect('/');

Pour retourner vers un URL quelconque : 

Contrôleur Laravel (PHP)

return redirect()->away('https://undomaine.com/unepage.php');

Une autre façon de préciser la redirection consiste à faire suivre redirect() par une flèche puis une autre fonction.

  • redirect()->route(nomRoute) pour rediriger vers une route nommée (la méthode d'action correspondant à cette route sera exécutée)
  • redirect()->action(NomControleur@nomMethode) pour rediriger vers une méthode d'action
  • redirect()->guest(route('nomRoute')) pour rediriger vers une route nommée lorsque l'usager n'est pas authentifié
  • redirect()->intended() pour rediriger vers la page qui avait été demandée avant d'être interceptée par le middleware d'authentification. Il est possible de passer un URL en paramètre, qui sera utilisé si l'URL original n'était pas disponible.
  • redirect()->to() pour avoir plus de latitude sur l'URL vers lequel la redirection aura lieu, par exemple en lui ajoutant une ancre.

Par exemple, pour retourner à la route nommée produits.index :

Contrôleur Laravel (PHP)

return redirect()->route('produits.index');

Si on a besoin de placer la page à un endroit précis, on pourra préciser le nom d'une ancre, par exemple https://mondomaine.com/produits#123 :

Contrôleur Laravel (PHP)

return redirect()->to(route('produits.index') . '#' . $produit->id);

Il est également possible de faire suivre des informations lors de la redirection :

  • redirect()->...->with(['nomVariable' => 'valeur', 'autreVariable' => 'autre valeur']) : pour faire suivre des variables de session flash ou, en anglais, flashed session data. Ces variables existeront l'instant d'une seule requête HTTP.
  • redirect()->...->withInput() : pour faire suivre les informations entrées dans un formulaire.

Ex :

Contrôleur Laravel (PHP)

return redirect('produits')->with(['etatOperation' => 'success', 'messageFlash' => 'Le produit a été ajouté avec succès !']); 

Fonction back()

La fonction back(), qui est l'équivalent de redirect(url()->previous()), permet de retourner à la page précédente :

Contrôleur Laravel (PHP)

return back();

Tout comme avec redirect(), il est possible de faire suivre de l'information :

Contrôleur Laravel (PHP)

return back()->withInput();

Pour plus d'information

« All about Redirects in Laravel 5 ». Laravel Daily. http://laraveldaily.com/all-about-redirects-in-laravel-5/

« HTTP Responses - Redirects ». Laravel. https://laravel.com/docs/master/responses#redirects

« Routes file: redirect “everything else” to homepage ». Laravel Daily. http://laraveldaily.com/routes-file-redirect-everything-else-to-homepage/

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Par Christiane Lagacé
Dernière révision le 12 mai 2023
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre