Filament permite adicionar anexos a um registro, mas não os exclui quando você exclui o registro.
Para resolver esse problema, temos duas alternativas:
Quando um modelo está prestes a ser excluído, ele dispara o evento de exclusão. Podemos ouvir este evento para acionar a funcionalidade responsável por excluir quaisquer anexos antes que o modelo não exista mais.
Dentro da classe do modelo podemos adicionar o método inicializado para registrar novos ouvintes de eventos no modelo.
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); }); } }
Este código excluirá o anexo da miniatura antes de excluir o modelo.
Você pode ler mais sobre isso na documentação do Laravel https://laravel.com/docs/11.x/eloquent#events-using-closures
Outra opção é alterar o comportamento da ação de exclusão.
protected function getActions(): array { return [ Actions\DeleteAction::make() ->after(function (Project $project) { // delete single if ($project->thumbnail) { Storage::disk('public')->delete($project->thumbnail); } }) ]; }
Você pode usar a opção que melhor atende aos seus requisitos, mas deve ter em mente que adicionar um ouvinte de evento excluirá o anexo quando seu modelo for excluído, sempre que tiver ocorrido por uma ação do Filament ou outra parte do código em seu aplicativo.
Isso é importante porque provavelmente determinará a opção que você deve escolher.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3