我在上传文件时遇到了livewire的问题。我正在使用一个非常基本的示例来实现我的目标,但问题是它在提交时返回null。
下面是我的Livewire控制器代码:
class UploadPhoto extends Component
{
use WithFileUploads;
public $photo;
public function save()
{
dd($this->photo); //returns null
$this->validate([
'photo' => 'image|max:1024', // 1MB Max
]);
$this->photo->store('photos');
}
}
<form wire:submit.prevent="save">
<input type="file" wire:model="photo">
@error('photo') <span class="error">{{ $message }}</span> @enderror
<button type="submit">Save Photo</button>
</form>
3条答案
按热度按时间qq24tv8q1#
所以,正如我之前所说,几周前我也遇到了同样的问题。
我有一个非常基本的Livewire控制器来存储图像,但无论我做什么,输入总是返回一个NULL值,或者一直说图像输入是REQUIRED,即使选择了图像。
但是,如果我使用一个普通的控制器(没有火线)一切工作完美不知何故。
在浪费了许多小时之后,我仍然启动了我的网站,并注意到那里的一切工作都像一个魅力。
所以我一直在想:* * 为什么它在我的本地环境中不起作用?**
一切都是最新的!
我也在本地运行我的项目,并且一直在使用端口3000(http://localhost:3000)上提供的热重载。
由于这个问题让我抓狂,我停止了热重新加载,并继续测试主服务主机名(localhost)上的所有内容。
然后神奇地......一切顺利。
我仍然不明白为什么Livewire不能在热重载下正常工作。我的意思是,除了
input type="file"
存储图像之外,所有的东西都能正常工作。希望这能帮上一点忙!
tyu7yeag2#
您确定与文件上传一起使用?
use Livewire\WithFileUploads;
3z6pesqy3#
您的代码块看起来没问题,但缺少一个标记来阻止更新元素。为此,我们使用wire:ignore.self。wire:ignore.self将通知livewire不要更新此元素或其子元素”。
下面是您的示例的正确代码: