Сохранение записи в Livewire
Форма уже отправляется, и заголовок с текстом лежат в свойствах компонента. На экране они видны, но в базе строки ещё нет: после обновления страницы введённое пропадёт.
Чтобы пост сохранился, метод
save должен создать запись
через модель, как в обычном
Laravel-приложении.
Пусть в проекте есть модель Post
с разрешёнными для заполнения
полями заголовка и текста:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'body'];
}
?>
Давайте оформим форму с
wire:submit:
<div>
<form wire:submit="save">
<input type="text" wire:model="title">
<textarea wire:model="body"></textarea>
<button type="submit">
Save
</button>
</form>
</div>
Давайте в save создадим
запись из свойств формы:
<?php
namespace App\Livewire;
use App\Models\Post;
use Livewire\Component;
class PostForm extends Component
{
public $title = '';
public $body = '';
public function save()
{
Post::create([
'title' => $this->title,
'body' => $this->body,
]);
}
public function render()
{
return view('livewire.post-form');
}
}
?>
Сохраните работника в базу.