Guide de base pour le routage Laravel

Salut les développeurs Laravel en herbe ! Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde du routage Laravel. En tant que votre enseignant bienveillant en informatique, je vais vous guider à travers ce concept fondamental, en vous assurant de comprendre chaque étape. Alors, prenez une tasse de café (ou de thé, si c'est votre truc), et plongons dedans !

Laravel - Routing

Qu'est-ce que le routage ?

Avant de commencer, comprenons ce qu'est réellement le routage. Imaginez que vous êtes dans une grande bibliothèque (l'internet), et que vous cherchez un livre spécifique (une page web). Le bibliothécaire (le routeur) vous aide à trouver exactement le livre que vous cherchez. En développement web, le routage est comme ce bibliothécaire, dirigeant les requêtes web vers les bonnes parties de votre application.

Routage de base

Commençons par les bases. Dans Laravel, le routage est géré dans le fichier routes/web.php. C'est ici que nous disons à notre application comment répondre à différentes requêtes URL.

Route simple

Voici la forme la plus simple d'une route :

Route::get('/', function () {
return 'Hello, World!';
});

Décomposons cela :

  • Route::get() indique à Laravel de répondre à une requête GET.
  • Le premier paramètre '/' est le chemin de l'URL (dans ce cas, la page d'accueil).
  • Le second paramètre est une fonction qui renvoie ce qui doit être envoyé au navigateur.

Lorsque vous visitez la page d'accueil de votre site, vous verrez "Hello, World!" affiché.

Route vers une vue

Souvent, au lieu de renvoyer du texte, nous voulons renvoyer une page HTML complète. Laravel le rend facile :

Route::get('/welcome', function () {
return view('welcome');
});

Cette route renverra la vue welcome lorsque quelqu'un visite /welcome. Les vues sont des templates HTML stockés dans le répertoire resources/views.

Route avec un contrôleur

À mesure que votre application grandit, vous voudrez utiliser des contrôleurs pour mieux organiser votre code :

Route::get('/users', 'UserController@index');

Cette route indique à Laravel d'appeler la méthode index sur le UserController lorsque quelqu'un visite /users.

Paramètres de route

Maintenant, rendons les choses plus intéressantes. Que se passe-t-il si nous voulons gérer des segments dynamiques dans nos URLs ?

Paramètres de base

Route::get('/user/{id}', function ($id) {
return 'User '.$id;
});

Cette route correspondra aux URLs comme /user/1, /user/2, etc. Le {id} dans l'URL devient une variable qui est transmise à la fonction.

Paramètres optionnels

Parfois, un paramètre pourrait être optionnel. Nous pouvons aussi gérer cela :

Route::get('/user/{name?}', function ($name = 'John') {
return 'Hello, '.$name;
});

Cette route fonctionnera pour à la fois /user et /user/Jane. Si aucun nom n'est fourni, il est par défaut 'John'.

Contraintes de paramètres

Nous pouvons également ajouter des contraintes à nos paramètres en utilisant des expressions régulières :

Route::get('/user/{id}', function ($id) {
return 'User '.$id;
})->where('id', '[0-9]+');

Cette route ne correspondra que si l'id est composé d'un ou plusieurs chiffres.

Routes nommées

Les routes nommées vous permettent de vous référer aux routes par un nom plutôt que par leur URL. Cela est particulièrement utile lorsque vous avez besoin de générer des URLs ou des redirections dans votre application.

Définir une route nommée

Route::get('/user/profile', function () {
//
})->name('profile');

Utiliser une route nommée

Une fois qu'une route est nommée, vous pouvez générer des URLs ou des redirections pour la route comme ceci :

// Générer une URL...
$url = route('profile');

// Générer une redirection...
return redirect()->route('profile');

Cela est extrêmement utile car si vous devez jamais changer l'URL de la page de profil, vous n'avez qu'à le faire à un seul endroit (la définition de la route), et toutes les références à la route nommée utiliseront automatiquement la nouvelle URL.

Groupes de routes

À mesure que votre application grandit, vous pourriez vous trouver à appliquer le même middleware ou préfixe à un groupe de routes. Laravel vous permet de regrouper ces routes :

Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', function () {
// Nécessite une authentification...
});

Route::get('/account', function () {
// Nécessite une authentification...
});
});

Cela applique le middleware auth aux routes /dashboard et /account.

Méthodes de route

Laravel prend en charge le routage pour tous les verbes HTTP standard. Voici un tableau de référence rapide :

Verb HTTP Méthode de route
GET Route::get()
POST Route::post()
PUT Route::put()
PATCH Route::patch()
DELETE Route::delete()
OPTIONS Route::options()

Vous pouvez même répondre à plusieurs verbes HTTP avec une seule route :

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});

Et voilà ! Vous avez刚刚 fait vos premiers pas dans le monde du routage Laravel. Souvenez-vous, la pratique fait toujours parfait, donc n'ayez pas peur d'expérimenter avec différentes routes et de voir ce qui se passe.

Avant de me quitter, voici une petite blague sur le routage : Pourquoi le développeur est-il devenu broke ? Parce qu'il a utilisé tout son cache ! ?

Bonne programmation, et puissent vos routes vous mener toujours là où vous voulez aller !

Credits: Image by storyset