公告: 旧版文档请移步 -> http://v2.laravel-filament.cn/docs

Languages

Version

Theme

后台面板 - 资源

查看记录

创建带有查看页的资源

要想创建一个带有查看页面的新资源,你可以使用 --view 标志:

php artisan make:filament-resource User --view

在现有资源上添加查看页

如果你要添加查看页面到现有的资源上,可以使用如下命令在你的资源 Pages 目录中创建新页面:

php artisan make:filament-page ViewUser --resource=UserResource --type=ViewRecord

你必须在资源 getPages() 方法中注册这个新页面:

public static function getPages(): array
{
return [
'index' => Pages\ListUsers::route('/'),
'create' => Pages\CreateUser::route('/create'),
'view' => Pages\ViewUser::route('/{record}'),
'edit' => Pages\EditUser::route('/{record}/edit'),
];
}

在模态框中查看数据

如果你的资源是简易资源,你或许更希望通过模态框查看记录。如果是这种情况,你只需删除相关查看页面。

如果你的资源中没有 ViewAction, 你可以将其加入到 $table->actions() 数组中:

use Filament\Resources\Table;
use Filament\Tables;
 
public static function table(Table $table): Table
{
return $table
->columns([
// ...
])
->actions([
Tables\Actions\ViewAction::make(),
// ...
]);
}

填充表单前自定义数据

你可能想要在记录填充到表单前修改数据。你可以通过定义 mutateFormDataBeforeFill() 方法去修改 $data 数组,在填充到表单前返回修改后的版本:

protected function mutateFormDataBeforeFill(array $data): array
{
$data['user_id'] = auth()->id();
 
return $data;
}

此外,如果你想在模态框操作中查看记录:

use Filament\Tables\Actions\ViewAction;
 
ViewAction::make()
->mutateRecordDataUsing(function (array $data): array {
$data['user_id'] = auth()->id();
 
return $data;
})

授权

关于授权,Filament 会监听所有应用中注册的模型策略

如果模型策略的 view() 方法中返回的是 true(),用户可以访问查看页。

自定义视图

要进一步自定义,你可以覆盖页面类的静态 $view 属性:

protected static string $view = 'filament.resources.users.pages.view-user';
Edit on GitHub

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