メインコンテンツへスキップ

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は、Bladeファイルを配置するだけでルートを定義できるページベースのルーターです。 従来の routes/web.php 中心の定義と違い、ファイルシステムの構造をそのままURLに反映できます。 コンテンツ中心のサイトや、画面ごとに素早くページを追加したい管理画面で特に有効です。 APIのように細かいHTTP制御が必要な領域は、通常のルーティングと併用するのが実践的です。

インストール

まずはComposerでFolioを追加します。
composer require laravel/folio
php artisan folio:install
folio:install はFolioのサービスプロバイダーを登録します。 デフォルトでは resources/views/pages/ がページディレクトリになります。 複数のページディレクトリやベースURIを使い分ける場合は、サービスプロバイダーの bootFolio::path()uri() を設定します。
use Laravel\Folio\Folio;

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

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

ルートの作成

Folioは、マウントされたディレクトリ配下のBladeファイル名からURLを自動生成します。
resources/views/pages/schedule.blade.php -> /schedule
php artisan folio:list

ネストされたルート

ディレクトリをネストすると、URLも同じ構造でネストされます。
php artisan folio:page user/profile
# pages/user/profile.blade.php -> /user/profile

インデックスルート

index.blade.php は、そのディレクトリのルートにマッピングされます。
php artisan folio:page index
# pages/index.blade.php -> /

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

ルートパラメーター

ファイル名の [] でURLセグメントを受け取れます。
php artisan folio:page "users/[id]"
# pages/users/[id].blade.php -> /users/1
<div>User {{ $id }}</div>
複数セグメントを受け取る場合は ... を使います。
php artisan folio:page "users/[...ids]"
# pages/users/[...ids].blade.php -> /users/1/2/3
@foreach ($ids as $id)
    <li>User {{ $id }}</li>
@endforeach

ルートモデルバインディング

[User].blade.php のようにモデル名を使うと、自動でモデル解決されます。
php artisan folio:page "users/[User]"
# pages/users/[User].blade.php -> /users/1
<div>User {{ $user->id }}</div>
ソフトデリート済みモデルも扱う場合は、ページ内で withTrashed() を呼び出します。
<?php

use function Laravel\Folio\withTrashed;

withTrashed();
[Post:slug].blade.php のように書くと、id 以外のキー(例: slug)でもモデル解決できます。

ミドルウェア

特定ページにだけ適用する場合は、ページテンプレート内で middleware() を使います。
<?php

use function Laravel\Folio\middleware;

middleware(['auth', 'verified']);
複数ページへ一括適用する場合は、Folio::path(...)->middleware() を使います。
<?php

use Laravel\Folio\Folio;

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

名前付きルート

Folioページにも name() でルート名を付けられます。
<?php

use function Laravel\Folio\name;

name('users.index');
users/[User].blade.php のような個別ページ側で name('users.show') を定義すると、パラメーター付きURLを route('users.show', ['user' => $user]) で生成できます。
付与したルート名は route() ヘルパーでURL生成できます。
route('users.index');
route('users.show', ['user' => $user]);

ファイルとURLの対応

従来のルーティングとの比較

特徴通常ルーティングFolio
ルート定義routes/web.phpファイル名で自動
コントローラー必要(またはクロージャ)不要(Bladeに直接)
向いているケースAPIやSPA、複雑なHTTP制御コンテンツサイト、管理画面
Folioを使う場合でも、php artisan route:cache でルートキャッシュを有効にすると本番性能を最適化できます。
Last modified on April 16, 2026