https://apical.xyz/fiches/la_redirection_002/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().
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 :
return redirect('produits');
Pour retourner à la page d'accueil :
return redirect('/');
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.
Par exemple, pour retourner à la route nommée produits.index :
return redirect()->route('produits.index');
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 :
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 :
return back();
Tout comme avec redirect(), il est possible de faire suivre de l'information :
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/