我有一个包含文件上传的表单。当我上传文件时,它会保存到我想要的
public/uploads/documents
位置。但是,我希望每个用户都应该根据客户详细信息表上的用户文件夹名称保存其文件public/uploads/documents/userfolder
。我正在使用关系管理器来保存客户的详细信息和上传的文件。我如何实现这一目标?
FileUpload::make('name')->disk('public')->directory('documents/'.$foldername),
我想从表中相关的父模型中获取$foldername
大多数 Filament 都接受回调,包括
->directory()
方法。
您可以通过以下两种方式之一使用回调参数:
Forms\Components\FileUpload::make('image_url')
->directory(fn() => 'public/uploads/documents/' . Auth::id())
])
或者如果您需要创建更动态的回调,您可以使用以下内容:
Forms\Components\FileUpload::make('image_url')
->directory(function() {
$folder = Auth()->user->details->foldername // Assuming you've set up relationships with eloquent
return 'public/uploads/documents/' . $folder;
})
])
如果需要将当前模态传递给记录,可以使用多个参数,例如 $record 和 $state。
请参阅此处:https://filamentphp.com/docs/3.x/forms/advanced#injecting-the-current-state-of-a-field