Laravel Filament 目录下的 FileUpload 字段如何动态更改?

问题描述 投票:0回答:1

我有一个包含文件上传的表单。当我上传文件时,它会保存到我想要的

public/uploads/documents
位置。但是,我希望每个用户都应该根据客户详细信息表上的用户文件夹名称保存其文件
public/uploads/documents/userfolder
。我正在使用关系管理器来保存客户的详细信息和上传的文件。我如何实现这一目标?

FileUpload::make('name')->disk('public')->directory('documents/'.$foldername),

我想从表中相关的父模型中获取$foldername

php laravel forms laravel-filament
1个回答
0
投票

大多数 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

© www.soinside.com 2019 - 2024. All rights reserved.