はじめに
Laravel Folioは、Bladeファイルを配置するだけでルートを定義できるページベースのルーターです。
従来の routes/web.php 中心の定義と違い、ファイルシステムの構造をそのままURLに反映できます。
コンテンツ中心のサイトや、画面ごとに素早くページを追加したい管理画面で特に有効です。
APIのように細かいHTTP制御が必要な領域は、通常のルーティングと併用するのが実践的です。
インストール
まずはComposerでFolioを追加します。
folio:install はFolioのサービスプロバイダーを登録します。
デフォルトでは resources/views/pages/ がページディレクトリになります。
複数のページディレクトリやベースURIを使い分ける場合は、サービスプロバイダーの boot で Folio::path() と uri() を設定します。
ルートの作成
Folioは、マウントされたディレクトリ配下のBladeファイル名からURLを自動生成します。
ネストされたルート
ディレクトリをネストすると、URLも同じ構造でネストされます。
インデックスルート
index.blade.php は、そのディレクトリのルートにマッピングされます。
ルートパラメーター
ファイル名の [] でURLセグメントを受け取れます。
複数セグメントを受け取る場合は ... を使います。
ルートモデルバインディング
[User].blade.php のようにモデル名を使うと、自動でモデル解決されます。
ソフトデリート済みモデルも扱う場合は、ページ内で withTrashed() を呼び出します。
[Post:slug].blade.php のように書くと、id 以外のキー(例: slug)でもモデル解決できます。
ミドルウェア
特定ページにだけ適用する場合は、ページテンプレート内で middleware() を使います。
複数ページへ一括適用する場合は、Folio::path(...)->middleware() を使います。
名前付きルート
Folioページにも name() でルート名を付けられます。
users/[User].blade.php のような個別ページ側で name('users.show') を定義すると、パラメーター付きURLを route('users.show', ['user' => $user]) で生成できます。
付与したルート名は route() ヘルパーでURL生成できます。
ファイルとURLの対応
従来のルーティングとの比較
Folioを使う場合でも、php artisan route:cache でルートキャッシュを有効にすると本番性能を最適化できます。