> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel Folio

> Von der Installation bis zum Route Model Binding: So implementieren Sie mit Laravel Folio dateibasiertes Routing.

## 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.

```bash theme={null}
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()`.

```php theme={null}
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.

```text theme={null}
resources/views/pages/schedule.blade.php -> /schedule
```

```bash theme={null}
php artisan folio:list
```

### Verschachtelte Routen

Verschachtelte Verzeichnisse führen zu verschachtelten URLs.

```bash theme={null}
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.

```bash theme={null}
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.

```bash theme={null}
php artisan folio:page "users/[id]"
# pages/users/[id].blade.php -> /users/1
```

```blade theme={null}
<div>User {{ $id }}</div>
```

Für mehrere Segmente `...` benutzen.

```bash theme={null}
php artisan folio:page "users/[...ids]"
# pages/users/[...ids].blade.php -> /users/1/2/3
```

```blade theme={null}
@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.

```bash theme={null}
php artisan folio:page "users/[User]"
# pages/users/[User].blade.php -> /users/1
```

```blade theme={null}
<div>User {{ $user->id }}</div>
```

Für Soft-Deleted-Modelle rufen Sie in der Seite `withTrashed()` auf.

```php theme={null}
<?php

use function Laravel\Folio\withTrashed;

withTrashed();
```

<Info>
  Mit `[Post:slug].blade.php` erfolgt die Auflösung über einen anderen Schlüssel als `id`, z. B. `slug`.
</Info>

## Middleware

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

```php theme={null}
<?php

use function Laravel\Folio\middleware;

middleware(['auth', 'verified']);
```

Für mehrere Seiten gemeinsam nutzen Sie `Folio::path(...)->middleware()`.

```php theme={null}
<?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 theme={null}
<?php

use function Laravel\Folio\name;

name('users.index');
```

<Info>
  Wenn Sie in `users/[User].blade.php` `name('users.show')` setzen, erzeugen Sie parameterisierte URLs mit `route('users.show', ['user' => $user])`.
</Info>

Die Route-Namen können Sie wie gewohnt mit `route()` verwenden.

```php theme={null}
route('users.index');
route('users.show', ['user' => $user]);
```

## Datei → URL

```mermaid theme={null}
graph LR
  A["pages/index.blade.php"] --> B["/"]
  C["pages/about.blade.php"] --> D["/about"]
  E["pages/users/[User].blade.php"] --> F["/users/1"]
```

## Vergleich mit klassischem Routing

| Aspekt            | Klassisches Routing        | Folio                          |
| ----------------- | -------------------------- | ------------------------------ |
| Routen-Definition | `routes/web.php`           | Automatisch per Dateiname      |
| Controller        | Nötig (oder Closure)       | Nicht nötig (direkt in Blade)  |
| Ideal für         | APIs, SPAs, komplexes HTTP | Content-Seiten, Admin-Bereiche |

<Tip>
  Auch mit Folio sollten Sie in Produktion `php artisan route:cache` einsetzen, um die Performance zu optimieren.
</Tip>


## Related topics

- [Anwendungsstruktur ab Laravel 11](/de/advanced/app-structure.md)
- [Laravel Boost](/de/boost.md)
- [Laravel-Paketentwicklung](/de/advanced/package-development.md)
- [Laravel Telescope](/de/telescope.md)
- [Laravel Bluesky](/de/packages/laravel-bluesky/index.md)
