Skip to content
全部文档

自定义资源页面

简介

Filament 允许你为资源创建完全自定义的页面。要创建新页面,可以使用:

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

该命令会创建两个文件:资源目录下 /Pages 中的页面类,以及资源视图目录下 /pages 中的视图。

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

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

WARNING

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

路由路径中定义的任意 参数 都会提供给页面类,方式与 Livewire 相同。

带设置表单的自定义资源页面带设置表单的自定义资源页面

使用资源记录

若希望创建与 编辑查看 页面类似、使用单条记录的页面,可以使用 InteractsWithRecord trait:

php
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}

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