跳到主要内容
版本:3.x

自定义页面

概述

Filament 允许你为资源创建完全自定义的页面。使用如下命令创建新页面:

php artisan make:filament-page SortUsers --resource=UserResource --type=custom

这一命令将创建两个文件 - 在资源目录的 /Pages 文件夹中新建一个页面类,在资源视图目录的 /pages 文件夹中创建一个新的视图(view)文件。

你必须在资源的静态方法 getPages() 中为自定义页面注册路由:

public static function getPages(): array
{
return [
// ...
'sort' => Pages\SortUsers::route('/sort'),
];
}

在此方法中注册的页面顺序很重要 —— 在硬编码路由之前先定义的通配符路由,Laravel 路由器都会优先匹配。

路由路径下定义的所有参数,在页面类中都是可用的。和 Livewire 中的路由参数采用相同的方式。

使用资源记录

如果你想创建一个类似于编辑页查看页使用记录的页面,你可以使用 InteractsWithRecord trait:

use Filament\Resources\Pages\Page;
use Filament\Resources\Pages\Concerns\InteractsWithRecord;

class ManageUser extends Page
{
use InteractsWithRecord;

public function mount(int | string $record): void
{
$this->record = $this->resolveRecord($record);
}

// ...
}

mount() 方法将解析 URL 中的记录并将其保存到 $this->record。任何时候在类或视图中使用 $this->getRecord() 都能访问该记录。

要添加记录作为路由参数,你必须在 getPages() 中定义 {record}

public static function getPages(): array
{
return [
// ...
'manage' => Pages\ManageUser::route('/{record}/manage'),
];
}