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