Сохранение файла в Livewire
Давайте теперь возьмём картинку, которую человек приложил к посту. До обновления страницы она ещё держится, а в папке сайта файла нет.
После отправки формы временный
файл можно положить в каталог
на диске через метод
store у объекта файла.
Путь, который вернёт этот вызов,
удобно показать под формой,
чтобы было видно, куда файл
попал.
Давайте создадим компонент
PostFile:
php artisan make:livewire PostFile --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/file', function () {
return view('posts-file');
});
?>
<x-layout>
<livewire:post-file />
</x-layout>
Давайте заведём свойства,
метод save и трейт
загрузки:
<?php
namespace App\Livewire;
use Livewire\Component;
use Livewire\WithFileUploads;
class PostFile extends Component
{
use WithFileUploads;
public $photo;
public $path = '';
public function save()
{
$this->path = $this->photo
->store(path: 'photos');
}
public function render()
{
return view(
'livewire.post-file'
);
}
}
?>
Давайте в шаблоне оформим форму и вывод пути:
<div>
<form wire:submit="save">
<input
type="file"
wire:model="photo"
>
<button type="submit">
Save
</button>
</form>
{{ $path }}
</div>
Создайте компонент EmployeeFile.
Выбранный файл работника кладётся
в папку сайта, а на странице
виден путь.