简介
Laravel Folio 是一个基于页面的路由器,只需放置 Blade 文件即可定义路由。 与传统的以routes/web.php 为中心的定义方式不同,它能够将文件系统的结构直接映射到 URL。
对于以内容为中心的网站,或希望按页面快速添加页面的后台管理系统尤其有效。
在需要精细 HTTP 控制的场景(如 API)中,建议与常规路由搭配使用。
安装
首先通过 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()。
命名路由
也可以通过name() 为 Folio 页面命名。
在诸如
users/[User].blade.php 这样的单个页面中定义 name('users.show') 后,就可以通过 route('users.show', ['user' => $user]) 生成带参数的 URL。route() 辅助函数生成 URL。
文件与 URL 的对应关系
与传统路由的对比
| 特性 | 常规路由 | Folio |
|---|---|---|
| 路由定义 | routes/web.php | 通过文件名自动生成 |
| 控制器 | 需要(或使用闭包) | 不需要(直接在 Blade 中处理) |
| 适用场景 | API、SPA、复杂的 HTTP 控制 | 内容网站、后台管理 |