Les routes avec Laravel

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.

▼Publicité

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

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

Notez qu'avant Laravel 5.3, les routes étaient définies dans le fichier app\Http\routes.php. Et sous Laravel 4, elles étaient définies dans le fichier app\routes.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.

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 http://mondomaine.com/produits mène à la méthode index() du contrôleur ProduitsController, on ajoutera la route suivante :

Fchier routes.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', [

    'as'   => 'nomRoute',

    'uses' => 'NomControleur@methode'

]);

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.

Ex :

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

http://mondomaine.com/produits

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/

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories