Passer au contenu principal

Introduction

Laravel Folio est un routeur orienté pages qui vous permet de définir des routes simplement en plaçant des fichiers Blade. Contrairement à la définition traditionnelle centrée sur routes/web.php, la structure du système de fichiers se reflète directement dans les URL. Folio est particulièrement utile pour les sites axés sur le contenu ou les back-offices où vous souhaitez ajouter rapidement de nouvelles pages. Pour les zones nécessitant un contrôle HTTP fin, comme les API, il est pragmatique de le combiner avec le routage classique.

Installation

Ajoutez d’abord Folio via Composer.
composer require laravel/folio
php artisan folio:install
folio:install enregistre le service provider de Folio. Par défaut, resources/views/pages/ devient le répertoire des pages. Pour utiliser plusieurs répertoires de pages ou différentes URI de base, configurez Folio::path() et uri() dans la méthode boot d’un service provider.
use Laravel\Folio\Folio;

Folio::path(resource_path('views/pages/guest'))->uri('/');

Folio::path(resource_path('views/pages/admin'))
    ->uri('/admin');

Création de routes

Folio génère automatiquement les URL à partir des noms de fichiers Blade situés sous le répertoire monté.
resources/views/pages/schedule.blade.php -> /schedule
php artisan folio:list

Routes imbriquées

Lorsque vous imbriquez des répertoires, les URL sont imbriquées selon la même structure.
php artisan folio:page user/profile
# pages/user/profile.blade.php -> /user/profile

Route d’index

index.blade.php est associé à la racine de son répertoire.
php artisan folio:page index
# pages/index.blade.php -> /

php artisan folio:page users/index
# pages/users/index.blade.php -> /users

Paramètres de route

Les crochets [] dans le nom de fichier permettent de recevoir un segment d’URL.
php artisan folio:page "users/[id]"
# pages/users/[id].blade.php -> /users/1
<div>User {{ $id }}</div>
Pour recevoir plusieurs segments, utilisez ....
php artisan folio:page "users/[...ids]"
# pages/users/[...ids].blade.php -> /users/1/2/3
@foreach ($ids as $id)
    <li>User {{ $id }}</li>
@endforeach

Route model binding

En utilisant un nom de modèle comme [User].blade.php, la résolution du modèle est automatique.
php artisan folio:page "users/[User]"
# pages/users/[User].blade.php -> /users/1
<div>User {{ $user->id }}</div>
Pour prendre en charge également les modèles supprimés en douceur, appelez withTrashed() dans la page.
<?php

use function Laravel\Folio\withTrashed;

withTrashed();
En écrivant [Post:slug].blade.php, vous pouvez résoudre le modèle avec une clé autre que id (par exemple slug).

Middleware

Pour appliquer un middleware à une page spécifique uniquement, utilisez middleware() dans le template.
<?php

use function Laravel\Folio\middleware;

middleware(['auth', 'verified']);
Pour appliquer un middleware en masse à plusieurs pages, utilisez Folio::path(...)->middleware().
<?php

use Laravel\Folio\Folio;

Folio::path(resource_path('views/pages'))->middleware([
    'admin/*' => ['auth', 'verified'],
]);

Routes nommées

Vous pouvez également attribuer un nom de route aux pages Folio avec name().
<?php

use function Laravel\Folio\name;

name('users.index');
En définissant name('users.show') dans une page individuelle telle que users/[User].blade.php, vous pouvez générer une URL avec paramètre via route('users.show', ['user' => $user]).
Les noms de routes attribués permettent de générer des URL avec le helper route().
route('users.index');
route('users.show', ['user' => $user]);

Correspondance fichiers / URL

Comparaison avec le routage classique

CaractéristiqueRoutage classiqueFolio
Définition de routeroutes/web.phpAutomatique via le nom de fichier
ContrôleurRequis (ou closure)Non requis (directement dans Blade)
Cas d’usageAPI, SPA, contrôle HTTP complexeSites de contenu, back-offices
Même avec Folio, activer le cache de routes via php artisan route:cache permet d’optimiser les performances en production.
Dernière modification le 13 juillet 2026