Laravel Folio
简介
Laravel Folio 是一个强大的基于页面的路由器,旨在简化 Laravel 应用程序中的路由。使用 Laravel Folio,生成路由变得像在应用程序的 resources/views/pages 目录中创建 Blade 模板一样简单。
例如,要创建一个可以在 /greeting URL 访问的页面,只需在应用程序的 resources/views/pages 目录中创建一个 greeting.blade.php 文件:
<div>
Hello World
</div>安装
首先,使用 Composer 包管理器将 Folio 安装到你的项目中:
composer require laravel/folio安装 Folio 后,你可以执行 folio:install Artisan 命令,该命令会将 Folio 的服务提供者安装到你的应用程序中。此服务提供者注册 Folio 将搜索路由/页面的目录:
php artisan folio:install页面路径 / URI
默认情况下,Folio 从应用程序的 resources/views/pages 目录提供页面,但你可以在 Folio 服务提供者的 boot 方法中自定义这些目录。
例如,有时在同一个 Laravel 应用程序中指定多个 Folio 路径可能很方便。你可能希望为应用程序的「admin」区域设置一个单独的 Folio 页面目录,而使用另一个目录存放应用程序的其余页面。
你可以使用 Folio::path 和 Folio::uri 方法来实现这一点。path 方法注册一个目录,Folio 将在路由传入 HTTP 请求时扫描该目录以查找页面,而 uri 方法指定该页面目录的「基础 URI」:
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 方法来实现这一点:
use Laravel\Folio\Folio;
Folio::domain('admin.example.com')
->path(resource_path('views/pages/admin'));domain 方法还允许你捕获域名或子域名的部分作为参数。这些参数将被注入到你的页面模板中:
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 命令: