Formation PUB030 : Laravel, 2019 Les routes

4.1 Création d'une route


Lorsqu'on affiche une page Web Laravel dans le navigateur, l'URL ne se terminera pas par le nom d'un fichier .html ni .php. Plutôt, il s'agira d'une suite de mots ressemblant à des dossiers et sous-dossiers, comme par exemple http://mondomaine.com/produits/creation.

Laravel fera le lien entre cette suite de mots et une méthode d'action définie dans un contrôleur. Ceci sera réalisé grâce à un système de routage configuré dans Laravel.

Avec un patron de conception MVC, tout part des routes.

Les routes utilisées sont définies dans le fichier routes\web.php.

Lors de la génération du projet Laravel, le fichier web.php contient le code suivant :

Fichier routes\web.php

<?php

 

/*

|--------------------------------------------------------------------------

| Web Routes

|--------------------------------------------------------------------------

|

| This file is where you may define all of the routes that are handled

| by your application. Just tell Laravel the URIs it should respond

| to using a Closure or controller method. Build something great!

|

*/

 

Route::get('/', function () {

    return view('welcome');

});

Dans ce fichier, on voit que lorsque le client demande l'URL / (donc uniquement le nom de domaine), il faut afficher la vue nommée welcome.

▼Publicité Le texte se poursuit plus bas

Création de nouvelles routes

Il est possible et même nécessaire d'ajouter d'autres routes pour diriger les demandes vers la bonne méthode d'un contrôleur ou encore, comme c'est le cas dans le code précédent, vers la bonne vue.

Par exemple, si on veut que l'URL https://mondomaine.com/produits mène à la méthode index() du contrôleur ProduitsController, on ajoutera la route suivante :

PHP

use App\Http\Controllers\ProduitsController;
...
Route::get('produits', [ProduitsController::class, 'index']);

Avant Laravel 8.0, il fallait utiliser cette syntaxe :

Fchier routes\web.php

Route::get('produits', 'ProduitsController@index');

Routes nommées

Si on veut mettre en place les meilleures pratiques de programmation, autant commencer tout de suite. Il sera plus intéressant de travailler avec les routes si on prend soin de leur donner un nom avec lequel on pourra y référer dans notre code.

Fichier routes\web.php

Route::get(
    'uri',
    [NomControleur::class, 'methode']
)->name('nomRoute');

Il n'y a pas de norme officielle qui définit comment nommer une route.

Cependant, il est d'usage de donner un nom composé de la première partie du nom du contrôleur, en lettres minuscules (ex : "produits" pour ProduitsController") suivi d'un point puis de la méthode d'action.

PHP

Route::get(
    'produits',
    [ProduitsController::class, 'index']
)->name('produits.index');

Avant Laravel 8.0, il fallait utiliser cette syntaxe :

Fichier routes\web.php

Route::get('produits', [

    'as' => 'produits.index',

    'uses' => 'ProduitsController@index',

]);

Ainsi, un contrôleur pourra passer le contrôle à la méthode d'action index du contrôleur ProduitsController en utilisant le nom de la route qui lui est associée :

Contrôleur Laravel (PHP)

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

Et une vue le fera comme suit :

Vue Laravel (Blade)

<a href="{{ route('produits.index') }}">@lang('produits.label_liste_produits')</a>

Peu importe comment la méthode d'action a été appelée, l'URL qui lui est associé est formé du nom de domaine suivi du premier paramètre spécifié lors de la définition de la route.

URL

https://mondomaine.com/produits

Ces fiches pourraient également vous intéresser

Pour plus d'information

« Routing ». Laravel. https://laravel.com/docs/master/routing

« Le routage et les façades ». Open Classrooms. https://openclassrooms.com/courses/decouvrez-le-framework-php-laravel/le-routage-2

« Simple and Easy Laravel Routing ». Scotch.io. https://scotch.io/tutorials/simple-and-easy-laravel-routing

« Generate URLs to Named Routes in Laravel ». Web Development Notes. http://dev-notes.eu/2016/11/generate-urls-to-named-routes-in-laravel/

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 31 mai 2021
Merci de partager !

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

Soumettre