编程

Filament v4 Beta 版即将发布!嵌套资源、多因素认证等新特性值得期待

48 2025-05-05 20:36:00

Filament v4

Filament v4 是 Filament 有史以来规模最大、功能最丰富的版本。本文将介绍 Filament v4 中的一些新特性:

嵌套资源

长期以来,Filament 团队一直收到嵌套资源的请求。而这个功能,在 Filament v4 中最终实现了。

嵌套资源资源允许你在父资源的上下文中操作给定的 Filament 资源。例如,在开发学习管理系统时,你可能会有一个 CourseResource 类来支持 Course 模型。在某个 Course 中,你还可能有许多包含实际课程材料的关联 Lesson 对象。

在此前的 v3 中,你可以在 CourseResource 中通过模型来编辑关联的 Lesson 记录。这将打开一个带有表单的模态框,你可以在其中进行调整。然而,对于像 Lesson 这样的东西,一个简单的模态框可能实际上还不够用。相反,你可能更喜欢在关联的 Couse 语境下编辑 Lesson,但要编辑一整页。现在,在 v4 中,嵌套资源允许你在父资源的上下文中对子资源进行这些编辑。

创建嵌套资源很容易——你可以像创建普通资源一样使用 make:filament-resource 命令,但可以添加 --nested 标志。完成后,你将得到一个连接到其父资源的 Resource 类,并且可以在其父资源的上下文中进行编辑。

多因素身份验证

长期以来,Filament 中的 Panel 包都包含一个用于登录、注册等的身份验证系统。无需任何调整,该系统在许多应用中都表现得非常好。然而,虽然标准的仅限电子邮件/密码的身份验证系统适用于许多应用,但必须承认,需要为其他类型的应用内置更多的安全层。

在当今时代,多因素身份验证对于身份验证几乎是必不可少的,因此为了帮助开发人员构建更安全的应用,Filament 团队实现了这一繁重的功能!

为了给开发人员提供更多选择,v4 升级了身份验证系统,将多因素身份验证作为开箱即用的选项!当开发者启用 MFA 时,用户在注册和登录应用程序时需要采取额外的步骤来设置多因素身份验证。你可以允许用户使用 Google 双因素身份验证系统(例如:Google Authenticator)或电子邮件代码身份验证系统,例如:向给定的电子邮件地址发送一次性密码。

你所要做的就是启用系统,Filament 将为你完成工作!无需设置 MFA 注册 UI,无需管理 MFA 认证流程;只要轻轻一按开关,一切都会迎刃而解。

静态表格数据

多年来的另一个常见要求是允许开发人员使用由非 Model 类提供的数据来创建 Filament 表格。过去,Filament 团队的建议是创建一个由 Sushi 支持的“模型”,但这并不适用于所有情况。

因此,v4 花费很多时间重新设计 Filament 表格,现在它们能够接收静态的非模型数据,并且以现有的 Filament 表包中的所有功能和细节进行显示!

要将静态数据添加到 Filament 表中,只需将要显示的数据数组传递给 Table 对象上现在存在的 records() 方法即可。一旦你做到了这一点, Filament 将渲染出你传入的任何数据。很简单!

统一的 Schema 和 Action

当剥离 Filament Tables 包并为静态数据重建时,Filament 同时对 Forms、Infolists 和 Actions 进行了重构。

在 v3 中,Form 组件位于 Forms 命名空间中,Infolist 组件位于 Infolist 命名空间中。然而,当退后一步审视这两个系统时,我们注意到它们有很多共同点,通过相互结合可以受益匪浅。因此,在 v4 中,Filament 将所有 FormInfolist 组件迁移到 Schema 命名空间中。这意味着你将少操心一个命名空间,但更重要的是,你现在可以在同一架构区域中混合和匹配表单(Form)和信息列表(Infolist)组件!

同样,在 Filament v3 中,对于各种水平多年的开发人员来说,Action 一直是一个可能的隐患。使用 Action 时,通常会在代码编辑器中键入 Action 类,结果却因为自动补全而导入了错误的 Action 类。此外,在创建自定义操作(Action)时,很容易意外地继承错误的操作,或者需要创建多个相同的操作才能在表单、信息列表、表格等中使用它。为了解决所有这些问题,我们将 Actions 更新为(几乎)都从同一个基础 Action 类继承。这意味着你几乎再也不会导入错误的 Action 类,更重要的是,你现在可以创建可在多个不同的 Filament 包(Forms、Infolists、Tables等)中重用的 Action。

性能改进

最后,但同样重要的是,Filament 团队一直在努力在 Filament 代码库中实现一些令人难以置信的性能改进。他们已经搜索了每一个类,以找出 v3 中存在的最大瓶颈,通过这种方式,Filament v4 在特定应用中有了巨大的性能提升。关于这些性能增强,有很多技术细节,可能需要单独发布一篇文章,但当你使用 v4 时,如果你发现你的应用在升级后运行得更快,请告诉我们!

发布时间

Filament 团队已经正式确定了 v4 Beta 版的发布日期。预计将于 2025 年 6 月 10 日在 Laravel Live UK 发布 Filament v4 Beta 测试版!

请记住,这个即将发布的版本仍然只是一个测试版,因此不建议在任何生产或其他关键任务应用中使用它。

 

下一篇