You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Filament:替换/{record}/edit路由中的record参数方法

自定义Filament资源路由的记录标识字段

要替换getPages()中默认的{record}占位符(默认传递ID)为自定义字段,需要分三步操作:

1. 修改路由定义

直接在getPages()方法里把{record}换成你想要的占位符名称,比如{family_slug}:

public static function getPages(): array
{
    return [
        'index' => Pages\ListUserFamilies::route('/'),
        'create' => Pages\CreateUserFamilies::route('/create'),
        'edit' => Pages\EditUserFamilies::route('/{family_slug}/edit'),
    ];
}

2. 重写路由绑定逻辑

在你的资源类中添加resolveRouteBinding方法,告诉Filament如何通过自定义字段值找到对应的数据库记录:

public static function resolveRouteBinding($value, $field = null)
{
    // 将`slug`替换为你实际要使用的字段名
    return static::getModel()::where('slug', $value)->firstOrFail();
}

3. 调整编辑链接生成

确保列表页及其他地方的编辑按钮链接使用自定义字段值,而不是默认的ID。在资源的表格配置中自定义EditAction:

use Filament\Tables\Actions\EditAction;

public static function table(Table $table): Table
{
    return $table
        ->columns([
            // 你的列定义
        ])
        ->actions([
            EditAction::make()
                ->url(fn ($record) => static::getUrl('edit', ['family_slug' => $record->slug])),
        ]);
}

如果还有其他场景需要生成编辑链接(比如记录详情页的按钮),同样需要用static::getUrl('edit', ['family_slug' => $record->slug])的方式生成正确的URL。

内容的提问来源于stack exchange,提问作者Delmontee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:42:15