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