如何将Filament Infolist的视图页面标题改为动态内容?
问题
我有一个名为role的Filament资源,包含视图路由,相关代码如下:
RoleResource.php
class RoleResource extends Resource { protected static ?string $model = Role::class; public static function infolist(Infolist $infolist): Infolist { return $infolist ->schema([ Section::make([ TextEntry::make('title'), TextEntry::make('url'), ]), ]); } public static function getPages(): array { return [ 'index' => Pages\\ListRoles::route('/'), 'create' => Pages\\CreateRole::route('/create'), 'edit' => Pages\\EditRole::route('/{record}/edit'), 'view' => Pages\\ViewRole::route('/{record}'), ]; } }
ViewRole.php
class ViewRole extends ViewRecord { protected static string $resource = RoleResource::class; }
当前视图页面的标题固定显示为「View Role」,如何将其修改为动态标题(例如「View {title}」,其中{title}为当前角色的title字段值)?
解决方案
要实现动态页面标题,只需在ViewRole.php中重写getTitle()方法,直接返回包含当前记录字段的自定义标题即可:
class ViewRole extends ViewRecord { protected static string $resource = RoleResource::class; // 重写getTitle方法生成动态标题 public function getTitle(): string { return "View {$this->record->title}"; } }
如果需要在资源层面统一管理标题逻辑(方便其他页面复用),可以在RoleResource中定义getRecordTitleAttribute()方法:
RoleResource.php
class RoleResource extends Resource { protected static ?string $model = Role::class; // 定义记录的标题属性 public static function getRecordTitleAttribute($record): string { return $record->title; } // 原有代码保持不变 public static function infolist(Infolist $infolist): Infolist { return $infolist ->schema([ Section::make([ TextEntry::make('title'), TextEntry::make('url'), ]), ]); } public static function getPages(): array { return [ 'index' => Pages\\ListRoles::route('/'), 'create' => Pages\\CreateRole::route('/create'), 'edit' => Pages\\EditRole::route('/{record}/edit'), 'view' => Pages\\ViewRole::route('/{record}'), ]; } }
然后在ViewRole.php中简化重写逻辑:
class ViewRole extends ViewRecord { protected static string $resource = RoleResource::class; public function getTitle(): string { return "View {$this->getRecordTitle()}"; } }
修改后,视图页面的标题会自动替换为「View [当前角色的title字段值]」,满足动态标题需求。
内容的提问来源于stack exchange,提问作者Adam Hopkinson
相关产品推荐
相关产品推荐

