Comprendre Laravel 5.4 : Les bases du routing

Share on LinkedInTweet about this on TwitterShare on FacebookShare on RedditShare on Google+

Afin d’avoir de gérer facilement et proprement les vues, Laravel propose un système de routing efficace.

Dans la version 5.4, le routing n’est plus dans le dossier « app/http/routes.php » mais dans « routes/web.php« , ce qui correspond à la version avec laquelle je travaille lors de la rédaction de cet article.

Avec notre site Laravel, toutes les requêtes pointent vers « index.php" du dossier « public« . On veut ajouter une page d’accueil personnalisé, on va ajouter une vue « home.php » dans le dossier « resources/views » puis référencer cette vue dans le fichier de routing « routes/web.php » :

<?php
 Route::get('/', function () { return view('home'); });

Ce code est interprété comme suit :

  • Route : Appel statique à la classe qui gère le système de route
  • get : vérifie avec la méthode http GET les paramètres
  • '/' : l’url comporte uniquement le nom de domaine

De cette façon, par défaut en arrivant sur « index.php » de notre site c’est la vue home qui sera chargée.

Bien évidemment, on va vouloir ajouter plusieurs vues à notre site, avec des paramètres différents selon ce qu’on souhaite réaliser. Ajoutons un routing supplémentaire :

On peut donc naviguer de la page index.php à la page 1, juste avec les paramètres présents dans l’url. Mais je voudrais par exemple configurer les routes pour avoir un paramètre de type numérique… Je peux créer un routing dynamique :

<?php 
Route::get('{n}', function($n) { return 'this is the page number ' .$n. ' !'; });

Le problème ici c’est que mon paramètre n’est pas protégé et qu’il accepte n’importe quelle donnée :/

http://localhost/laravel-test/public/3

http://localhost/laravel-test/public/wtf

Il va falloir protéger le type de données qui sera acceptée, dans ce cas on ne veut que des valeurs numériques :

<?php 
Route::get('{n}', function($n) { 
    return 'this is the page number ' .$n. ' !'; }
)->where('n', '[0-9]+');

Maintenant la page http://localhost/laravel-test/public/wtf affichera une erreur :

Tandis que la page http://localhost/laravel-test/public/5 fonctionnera correctement d’après notre règle :

 

Pour aller plus loin: https://laravel.com/docs/5.4/routing

 

 

Share on LinkedInTweet about this on TwitterShare on FacebookShare on RedditShare on Google+

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *