Introducción
Laravel Folio es un router basado en páginas que te permite definir rutas simplemente colocando archivos Blade. A diferencia de las definiciones tradicionales centradas enroutes/web.php, la estructura del sistema de archivos se refleja tal cual en las URLs.
Resulta especialmente útil en sitios centrados en contenido o en paneles de administración donde quieres añadir páginas con rapidez.
En áreas que requieren un control HTTP muy fino, como una API, es habitual combinarlo con el enrutamiento tradicional.
Instalación
Primero añade Folio con Composer.folio:install registra el service provider de Folio.
Por defecto el directorio de páginas es resources/views/pages/.
Si necesitas manejar varios directorios de páginas o URIs base, configura Folio::path() y uri() en el boot de un service provider.
Creación de rutas
Folio genera automáticamente URLs a partir de los nombres de los archivos Blade bajo el directorio montado.Rutas anidadas
Al anidar directorios, la URL también queda anidada con la misma estructura.Rutas índice
index.blade.php se mapea a la raíz de ese directorio.
Parámetros de ruta
Con los[] en el nombre del archivo puedes capturar segmentos de la URL.
....
Route model binding
Si usas el nombre del modelo, como en[User].blade.php, la resolución del modelo se hace automáticamente.
withTrashed() dentro de la página.
Si escribes
[Post:slug].blade.php, también podrás resolver el modelo por una clave distinta de id (por ejemplo, slug).Middleware
Para aplicarlo solo a una página concreta, usamiddleware() dentro de la plantilla.
Folio::path(...)->middleware().
Rutas con nombre
También puedes asignar un nombre a las páginas Folio conname().
Si en una página individual como
users/[User].blade.php defines name('users.show'), podrás generar URLs con parámetros mediante route('users.show', ['user' => $user]).route().
Correspondencia entre archivos y URLs
Comparación con el enrutamiento tradicional
| Característica | Enrutamiento normal | Folio |
|---|---|---|
| Definición de rutas | routes/web.php | Automática por nombre de archivo |
| Controlador | Necesario (o un closure) | Innecesario (directamente en Blade) |
| Casos adecuados | APIs, SPAs, control HTTP complejo | Sitios de contenido, paneles de administración |