如何从 Laravel Livewire 的属性中删除上传的文件?
Posted
技术标签:
【中文标题】如何从 Laravel Livewire 的属性中删除上传的文件?【英文标题】:How to remove uploaded file from property in Laravel Livewire? 【发布时间】:2022-01-05 03:40:50 【问题描述】:我正在使用 livewire 上传文件,我的输入模型必须是多个上传的文件,并在提交前向用户显示预览,但由于某种原因,用户想要从文件属性中删除图像或文件,如何我可以这样做吗?
【问题讨论】:
【参考方案1】:我发现最好的方法是使用 php split()
函数删除文件,只需将文件的索引号传递给函数并将其从文件属性数组中删除
例如:
调用以下方法签证wire:click="1"
或Livewire.emit('deleteFile','1')
和
public function deleteFile($fileIndex)
if($this->media != null)
\array_splice($this->media, (int)$mediaURl, 1);
else
$this->media = null;
但请记住,您必须在方法往返完成后更新前面的每个文件预览索引,您可以通过如下所示的 livewire 组件的调度和浏览器事件来实现这一点
public function deleteFile($fileIndex)
if($this->media != null)
\array_splice($this->media, (int)$mediaURl, 1);
else
$this->media = null;
$this->dispatchBrowserEvent('showDeleteBtn');
【讨论】:
以上是关于如何从 Laravel Livewire 的属性中删除上传的文件?的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 8 Jetstream 的 Blade 组件中绑定 Livewire 属性
Laravel Livewire 绑定模型 Carbon 属性
出现错误“在初始化之前不能访问类型属性” - Laravel Livewire