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 routeget
: 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
Vous aimez mes articles ? Offrez-moi un café !