#laravel #file-upload #laravel-livewire
Вопрос:
Я работаю над загрузкой файлов в livewire. Моя модель ввода должна состоять из нескольких загруженных файлов и показывать предварительный просмотр пользователю перед отправкой, но по какой-то причине пользователь хочет удалить изображение или файл из свойства файла, как я могу это сделать?
Ответ №1:
Лучший способ, который я нашел, это удалить файл с помощью split()
функции PHP, просто передайте номер индекса файла функции и удалите его из массива свойств файла
например: вызовите приведенный ниже метод visa wire:click="1"
или Livewire.emit('deleteFile','1')
и
public function deleteFile($fileIndex) { if($this-gt;media != null){ array_splice($this-gt;media, (int)$mediaURl, 1); }else{ $this-gt;media = null; } }
но имейте в виду, что вы должны обновлять индекс предварительного просмотра каждого файла спереди после завершения метода туда и обратно, вы можете сделать это с помощью диспетчеризации и события браузера из компонента livewire, как показано ниже
public function deleteFile($fileIndex) { if($this-gt;media != null){ array_splice($this-gt;media, (int)$mediaURl, 1); }else{ $this-gt;media = null; } $this-gt;dispatchBrowserEvent('showDeleteBtn'); }