Добавление записи в Livewire
Давайте теперь возьмём страницу, где посты уже стоят списком. Новый заголовок вписать некуда: строка появится только если её положили в базу вручную.
Форму на той же странице можно
связать с методом сохранения:
он создаст запись, очистит поля,
и список в render сразу
покажет свежую строку из базы.
Пусть в проекте есть модель
Post с полями заголовка
и текста.
Давайте создадим компонент
PostAdd:
php artisan make:livewire PostAdd --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts', function () {
return view('posts');
});
?>
<x-layout>
<livewire:post-add />
</x-layout>
Давайте заведём поля, метод
save и список в
render:
<?php
namespace App\Livewire;
use App\Models\Post;
use Livewire\Component;
class PostAdd extends Component
{
public $title = '';
public $body = '';
public function save()
{
Post::create([
'title' => $this->title,
'body' => $this->body,
]);
$this->title = '';
$this->body = '';
}
public function render()
{
$posts = Post::orderBy('id')
->get();
return view(
'livewire.post-add',
compact('posts')
);
}
}
?>
Давайте в шаблоне оформим форму и список заголовков:
<div>
<form wire:submit="save">
<input
type="text"
wire:model="title"
>
<textarea
wire:model="body"
></textarea>
<button type="submit">
Save
</button>
</form>
@foreach ($posts as $post)
<div wire:key="{{ $post->id }}">
{{ $post->title }}
</div>
@endforeach
</div>
Создайте компонент EmployeeAdd.
Сделайте форму имени и должности:
после сохранения работник виден
в списке на этой же странице.