Skip to content

Laravel Folio

简介

Laravel Folio 是一个强大的基于页面的路由器,旨在简化 Laravel 应用程序中的路由。使用 Laravel Folio,生成路由变得像在应用程序的 resources/views/pages 目录中创建 Blade 模板一样简单。

例如,要创建一个可以在 /greeting URL 访问的页面,只需在应用程序的 resources/views/pages 目录中创建一个 greeting.blade.php 文件:

php
<div>
    Hello World
</div>

安装

首先,使用 Composer 包管理器将 Folio 安装到你的项目中:

shell
composer require laravel/folio

安装 Folio 后,你可以执行 folio:install Artisan 命令,该命令会将 Folio 的服务提供者安装到你的应用程序中。此服务提供者注册 Folio 将搜索路由/页面的目录:

shell
php artisan folio:install

页面路径 / URI

默认情况下,Folio 从应用程序的 resources/views/pages 目录提供页面,但你可以在 Folio 服务提供者的 boot 方法中自定义这些目录。

例如,有时在同一个 Laravel 应用程序中指定多个 Folio 路径可能很方便。你可能希望为应用程序的「admin」区域设置一个单独的 Folio 页面目录,而使用另一个目录存放应用程序的其余页面。

你可以使用 Folio::pathFolio::uri 方法来实现这一点。path 方法注册一个目录,Folio 将在路由传入 HTTP 请求时扫描该目录以查找页面,而 uri 方法指定该页面目录的「基础 URI」:

php
use Laravel\Folio\Folio;

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

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

            // ...
        ],
    ]);

子域名路由

你也可以根据传入请求的子域名路由到页面。例如,你可能希望将来自 admin.example.com 的请求路由到与 Folio 页面其余部分不同的页面目录。你可以通过在调用 Folio::path 方法后调用 domain 方法来实现这一点:

php
use Laravel\Folio\Folio;

Folio::domain('admin.example.com')
    ->path(resource_path('views/pages/admin'));

domain 方法还允许你捕获域名或子域名的部分作为参数。这些参数将被注入到你的页面模板中:

php
use Laravel\Folio\Folio;

Folio::domain('{account}.example.com')
    ->path(resource_path('views/pages/admin'));

创建路由

你可以通过将 Blade 模板放置在任何 Folio 挂载目录中来创建 Folio 路由。默认情况下,Folio 挂载 resources/views/pages 目录,但你可以在 Folio 服务提供者的 boot 方法中自定义这些目录。

一旦 Blade 模板被放置在 Folio 挂载目录中,你就可以立即通过浏览器访问它。例如,放置在 pages/schedule.blade.php 中的页面可以在浏览器中通过 http://example.com/schedule 访问。

要快速查看所有 Folio 页面/路由的列表,你可以调用 folio:list Artisan 命令: