Languages

Version

Theme

资源

自定义资源页

介绍

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

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

此命令将创建两个文件 - 资源目录的 /Pages 目录中的页面类,以及资源视图目录的 /pages 目录中的视图。

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

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

NOTE

在此方法内注册的页面顺序很重要 —— 在硬编码路由段之前定义的任何通配符路由段都将优先被 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'),
    ];
}
Edit on GitHub

Still need help? Join our Discord community or open a GitHub discussion

Previous
在资源页中使用 Widget