Filament v4 测试版正式发布,并包含许多新功能。在本文中,我挑选了四个重要的功能。让我来演示一下。
注意:它仍然是一个 测试版,因此可能会有破坏性变更和未记录的功能。请谨慎使用。
1. 更快的表格。无需代码更改。
如果你有一个包含很多行的表格,你可能在 Filament 3 中遇到过性能问题。我几个月前在 YouTube 视频中向他们展示了 。
现在,在 v4 版本中,他们完全改变了表格单元格的渲染方式,我使用与视频中相同的项目进行了测试。
表格看起来是这样的:数据库中有10,000个订单,一次显示100行。

这是 Filament 3 中该表格的性能表现:

升级到 Filament 4 Beta 后的数据如下:

这是 **2.38 倍更快 **。厉害吧?
而且我没有修改任何代码,只是发布了升级指南脚本。
此外,Filament 的其他部分也有一些性能改进:
- 部分渲染 ,如果你不需要重新渲染整个页面,可以避免这种情况。一个实际的应用场景是,表格操作模态框将不再触发整个表格的重新渲染。很多人抱怨过这个问题。
- 使用 JS 代替 Livewire,通过函数如
afterStateUpdatedJs()
来避免不必要的网络请求
2. 使用来自 API 的数据的表格
在 Filament 4 中,表格数据不一定需要来自 Eloquent。
最典型的用例是从某个 API 获取外部数据。
这是社区最期待 Filament v4 的功能之一:

我在自定义的 Filament 页面上测试过,并使用了迪士尼角色 API。
这是从那个公共 API 返回的结果:

这是代码:
app/Filament/Pages/Characters.php
use Filament\Pages\Page;
use Filament\Tables\Table;
use Filament\Tables\Columns\TextColumn;
use Illuminate\Support\Facades\Http;
use Filament\Tables\Concerns\InteractsWithTable;
use Filament\Tables\Contracts\HasTable;
class Characters extends Page implements HasTable
{
use InteractsWithTable;
protected string $view = 'filament.pages.characters';
protected static string $icon = 'heroicon-o-user-group';
public function table(Table $table): Table
{
return $table
->records(fn (): array => Http::baseUrl('https://api.disneyapi.dev')
->get('character')
->collect()
->get('data', [])
)
->columns([
TextColumn::make('name'),
]);
}
}
这是表格的视觉效果:

3. 嵌套资源
人们一直期待的这个功能。
现在您可以为父级/相关资源提供,并在"子资源"编辑表单中实现此行为:

生成"子"资源的语法是这样的:
php artisan make:filament-resource Product --nested
然后该资源将被创建 **在父文件夹内部 **:
app/Filament/Resources/Categories/Resources/Products/ProductResource.php:
use App\Filament\Resources\Categories\CategoryResource;
// ...
class ProductResource extends Resource
{
protected static ?string $parentResource = CategoryResource::class;
// ...
关于此功能的更多信息,请查看官方文档的此页面 。
4. 富文本编辑器改进
Filament 文本编辑器已从 Trix 切换到 TipTap,新增功能以实现更强大的内容管理。
合并标签
您可以将占位符添加到文本中,然后从数据库中渲染它们的值。

在官方文档的这个页面了解更多关于合并标签的信息。
自定义模块
您可以准备一些文本块或 HTML 内容,并将其拖放到编辑器中:

在官方文档的这个页面了解更多关于自定义模块的信息。
这只是 Filament 4 Beta 的一些新功能。
你可以在本官方功能概述文章中了解更多。
但目前仍处于早期阶段,且目前仍是 Beta 版本,因此我会在接下来的几周或几个月内尝试发布更多内容、示例和视频。订阅我的 YouTube 频道 Filament Daily 以获取所有最新消息!
我还在计划重新拍摄从零开始学习 Filament 的课程 ,并在其 Beta 测试结束后将 FilamentExamples.com 项目更新至 v4 版本。