Filament 允许您向记录添加附件,但在删除记录时不会删除附件。
为了解决这个问题,我们有两种选择:
当模型即将被删除时,它会触发删除事件。我们可以监听此事件来触发负责在模型不再存在之前删除任何附件的功能。
在模型类中,我们可以添加 booted 方法来向模型注册新的事件侦听器。
class Project extends Model { protected $fillable = [ 'title', 'slug', 'repository', 'description', 'thumbnail', ]; /** * The "booted" method of the model. */ protected static function booted(): void { static::deleting(function ($project) { Storage::disk('public')->delete($project->thumbnail); }); } }
此代码将在删除模型之前删除缩略图附件。
您可以在 Laravel 文档中阅读更多相关信息 https://laravel.com/docs/11.x/eloquent#events-using-closures
另一个选项是更改删除操作的行为。
protected function getActions(): array { return [ Actions\DeleteAction::make() ->after(function (Project $project) { // delete single if ($project->thumbnail) { Storage::disk('public')->delete($project->thumbnail); } }) ]; }
您可以使用更适合您要求的选项,但您应该记住,删除模型时,无论何时由应用程序中的细丝操作或代码的其他部分发生,添加事件侦听器都会删除附件。
这很重要,因为可能会决定您应该选择的任何选项。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3