Удаление записи в Livewire
Давайте рассмотрим ситуацию, когда в списке на экране есть лишний пост, а убрать его можно только из базы вручную: на странице нет действия для строки.
Рядом с заголовком можно поставить кнопку, которая вызовет метод компонента с номером записи. Метод найдёт строку и удалит её, после чего Livewire снова отрисует список без этой позиции.
Пусть в проекте есть модель
Post с полями заголовка
и текста.
Давайте создадим компонент
PostDrop:
php artisan make:livewire PostDrop --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts', function () {
return view('posts');
});
?>
<x-layout>
<livewire:post-drop />
</x-layout>
Давайте добавим метод удаления
и список в render:
<?php
namespace App\Livewire;
use App\Models\Post;
use Livewire\Component;
class PostDrop extends Component
{
public function delete($id)
{
Post::find($id)->delete();
}
public function render()
{
$posts = Post::orderBy('id')
->get();
return view(
'livewire.post-drop',
compact('posts')
);
}
}
?>
Давайте в шаблоне выведем заголовок и кнопку у каждой строки:
<div>
@foreach ($posts as $post)
<div wire:key="{{ $post->id }}">
{{ $post->title }}
<button
type="button"
wire:click="delete({{ $post->id }})"
>
Delete
</button>
</div>
@endforeach
</div>
Создайте компонент EmployeeDrop.
У каждого работника должна быть
кнопка: по нажатию запись
пропадает из списка.