filament的resource列表页table使用了groupBy分组统计,设置column action后点击不执行
期望是点击column弹出modal,debug后发现点击column时filament会根据当前行主键查数据库,找不到当前行记录,就不会触发相关action.
解决方法是重写对应resource的ListRecords实现类的getTableRecordKey和getTableRecord方法,返回记录即可触发
例如对于产品来说,有一个按照产品分类统计的table,主键设置成product_cat,返回第一条这个分类的产品即可
public function getTableRecordKey(Model $record): string
{
return $record->product_cat;
}
public function getTableRecord(?string $key): ?Model
{
return $this->getTableQuery()->where('product_cat', $key)->first();
}
action逻辑
Tables\Actions\Action::make('detail_'.$detail)->modal()->modalContent(function ($livewire, $record, Table $table) use ($detail) {
}
在modalcontent里可以通过依赖注入获取对应信息