信息发布→ 登录 注册 退出

laravel Folio基于文件的路由如何使用_Laravel Folio文件路由使用教程

发布时间:2025-11-09

点击量:
Laravel Folio通过文件系统自动生成路由,无需手动定义。安装后配置Folio::path并设置中间件,resources/views/pages下的Blade文件自动映射为对应URL,如home.blade.php→/home,子目录按路径生成,支持[index]命名的动态参数,如[slug].blade.php捕获变量,可在模板中直接使用${"param"}获取值,结合PHP脚本处理简单逻辑,支持布局设定与全局数据共享,适用于快速构建静态或内容型站点。

Laravel Folio 是 Laravel 官方推出的基于文件系统的轻量级路由系统,特别适合构建不需要复杂路由定义的静态页面或简单内容型网站。它通过约定优于配置的方式,将 resources/views/pages 目录下的 Blade 文件自动映射为 Web 路由,无需手动编写 routes/web.php 中的每一个路由。

启用 Laravel Folio

要在项目中使用 Folio,首先需要安装并启用它:

  • 通过 Composer 安装 Folio:
    composer require laravel/folio
  • bootstrap/app.phpapp/Providers/RouteServiceProvider.php 中调用 Folio::route() 来启动文件路由。

例如,在 RouteServiceProviderboot 方法中添加:

use Laravel\Folio\Folio;

Folio::path(resource_path('views/pages'))->middleware(['web']);

这表示所有位于 resources/views/pages 的 Blade 文件都会被自动注册为路由。

基础路由映射规则

Folio 根据文件路径生成对应的 URL 路径:

  • resources/views/pages/home.blade.php/home
  • resources/views/pages/index.blade.php/(根路径)
  • resources/views/pages/about.blade.php/about
  • 子目录:resources/views/pages/blog/post-1.blade.php/blog/post-1

你不需要做任何额外配置,只要文件存在,就能通过对应 URL 访问。

使用变量和动态路由

Folio 支持基于文件名的动态参数绑定。使用 [slug] 这样的命名方式即可捕获动态段。

  • resources/views/pages/posts/[id].blade.php 可以匹配 /posts/1/posts/abc 等路径。
  • 在 Blade 模板中通过 ${"id"} 获取参数值:

查看文章 ID:{{ $id }}

支持多层嵌套和多个参数:

  • pages/users/[user]/photos/[photo].blade.php/users/alice/photos/1
  • 可用变量:$user$photo

在页面中处理数据或逻辑

虽然 Folio 主要用于静态内容展示,但也可以通过在 Blade 文件顶部插入 PHP 脚本来处理数据。

if (! $post) {
    abort(404);
}

$title = $post->title;

?>

{{ $title }}

{{ $post->content }}

这种写法适合简单的页面逻辑,保持简洁的同时避免创建控制器。

设置布局和共享数据

你可以为一组页面指定公共布局:

// 在 RouteServiceProvider 中设置默认布局
Folio::path(resource_path('views/pages'))
     ->layout('layouts.app');

或者在特定文件夹下使用不同的布局:

Folio::path('resources/views/pages/admin')
     ->layout('layouts.admin');

还可以通过 share 方法注入全局数据:

Folio::share('siteName', 'My Blog');

这样所有页面都可以直接使用 {{ $siteName }}

基本上就这些。Laravel Folio 让你用最简单的方式快速搭建内容型站点,省去大量重复的路由定义工作,特别适合文档页、营销页、博客等场景。

标签:# php  # 文件系统  # 可在  # 要做  # 可以通过  # 要在  # 适用于  # 不需要  # 多个  # 就能  # 还可以  # require  # 中间件  # php脚本  # 路由  # app  # composer  # bootstrap  # laravel  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!