Laravel Livewire文件上传返回空

jjhzyzn0  于 2023-03-09  发布在  其他
关注(0)|答案(3)|浏览(159)

我在上传文件时遇到了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>
qq24tv8q

qq24tv8q1#

所以,正如我之前所说,几周前我也遇到了同样的问题。
我有一个非常基本的Livewire控制器来存储图像,但无论我做什么,输入总是返回一个NULL值,或者一直说图像输入是REQUIRED,即使选择了图像。
但是,如果我使用一个普通的控制器(没有火线)一切工作完美不知何故。
在浪费了许多小时之后,我仍然启动了我的网站,并注意到那里的一切工作都像一个魅力。
所以我一直在想:* * 为什么它在我的本地环境中不起作用?**
一切都是最新的!
我也在本地运行我的项目,并且一直在使用端口3000(http://localhost:3000)上提供的热重载。
由于这个问题让我抓狂,我停止了热重新加载,并继续测试主服务主机名(localhost)上的所有内容。
然后神奇地......一切顺利。
我仍然不明白为什么Livewire不能在热重载下正常工作。我的意思是,除了input type="file"存储图像之外,所有的东西都能正常工作。
希望这能帮上一点忙!

tyu7yeag

tyu7yeag2#

您确定与文件上传一起使用?
use Livewire\WithFileUploads;

3z6pesqy

3z6pesqy3#

您的代码块看起来没问题,但缺少一个标记来阻止更新元素。为此,我们使用wire:ignore.self。wire:ignore.self将通知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');

    }

}

        

            
<div wire:ignore.self>
  <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>
</div>

相关问题