Zum Hauptinhalt springen

Einführung

Laravel Folio ist ein seitenbasierter Router: Sie definieren Routen, indem Sie einfach Blade-Dateien ablegen. Statt alles in routes/web.php zu deklarieren, bildet Folio die Verzeichnisstruktur direkt in URLs ab. Besonders geeignet für inhaltsgetriebene Seiten und Admin-Bereiche, in denen Sie schnell weitere Screens hinzufügen möchten. Für Bereiche mit feiner HTTP-Steuerung (APIs) kombinieren Sie Folio in der Praxis mit klassischem Routing.

Installation

Fügen Sie Folio per Composer hinzu.
composer require laravel/folio
php artisan folio:install
folio:install registriert den Service Provider. Standard-Verzeichnis ist resources/views/pages/. Für mehrere Verzeichnisse/Base-URIs setzen Sie im boot des Providers Folio::path() und uri().
use Laravel\Folio\Folio;

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

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

Route erstellen

Folio erzeugt die URL automatisch aus dem Blade-Dateinamen im Mount-Verzeichnis.
resources/views/pages/schedule.blade.php -> /schedule
php artisan folio:list

Verschachtelte Routen

Verschachtelte Verzeichnisse führen zu verschachtelten URLs.
php artisan folio:page user/profile
# pages/user/profile.blade.php -> /user/profile

Index-Routen

index.blade.php wird auf die Wurzel des Verzeichnisses gemappt.
php artisan folio:page index
# pages/index.blade.php -> /

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

Routenparameter

Mit [] im Dateinamen nehmen Sie URL-Segmente auf.
php artisan folio:page "users/[id]"
# pages/users/[id].blade.php -> /users/1
<div>User {{ $id }}</div>
Für mehrere Segmente ... benutzen.
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

Verwenden Sie den Modellnamen wie [User].blade.php, wird das Modell automatisch aufgelöst.
php artisan folio:page "users/[User]"
# pages/users/[User].blade.php -> /users/1
<div>User {{ $user->id }}</div>
Für Soft-Deleted-Modelle rufen Sie in der Seite withTrashed() auf.
<?php

use function Laravel\Folio\withTrashed;

withTrashed();
Mit [Post:slug].blade.php erfolgt die Auflösung über einen anderen Schlüssel als id, z. B. slug.

Middleware

Für einzelne Seiten verwenden Sie innerhalb der Page-Datei middleware().
<?php

use function Laravel\Folio\middleware;

middleware(['auth', 'verified']);
Für mehrere Seiten gemeinsam nutzen Sie Folio::path(...)->middleware().
<?php

use Laravel\Folio\Folio;

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

Benannte Routen

Auch Folio-Seiten können Namen bekommen.
<?php

use function Laravel\Folio\name;

name('users.index');
Wenn Sie in users/[User].blade.php name('users.show') setzen, erzeugen Sie parameterisierte URLs mit route('users.show', ['user' => $user]).
Die Route-Namen können Sie wie gewohnt mit route() verwenden.
route('users.index');
route('users.show', ['user' => $user]);

Datei → URL

Vergleich mit klassischem Routing

AspektKlassisches RoutingFolio
Routen-Definitionroutes/web.phpAutomatisch per Dateiname
ControllerNötig (oder Closure)Nicht nötig (direkt in Blade)
Ideal fürAPIs, SPAs, komplexes HTTPContent-Seiten, Admin-Bereiche
Auch mit Folio sollten Sie in Produktion php artisan route:cache einsetzen, um die Performance zu optimieren.
Zuletzt geändert am 13. Juli 2026