Заполнение формы в Livewire
Пусть форма поста на экране пустая, а нужные заголовок и текст уже известны заранее. После отправки те же поля удобно снова обнулить, чтобы набрать новый черновик.
У объекта формы есть вызовы, которые записывают массив значений в поля или возвращают форму к начальному пустому состоянию. Компонент только передаёт данные и обновляет разметку.
Давайте заведём DraftForm:
<?php
namespace App\Livewire\Forms;
use Livewire\Form;
class DraftForm extends Form
{
public $title = '';
public $body = '';
}
?>
Давайте создадим компонент
DraftEditor:
php artisan make:livewire DraftEditor --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/draft', function () {
return view('posts-draft');
});
?>
<x-layout>
<livewire:draft-editor />
</x-layout>
Давайте добавим в компонент действия для подстановки и очистки:
<?php
namespace App\Livewire;
use App\Livewire\Forms\DraftForm;
use Livewire\Component;
class DraftEditor extends Component
{
public DraftForm $form;
public function load()
{
$this->form->fill([
'title' => 'News',
'body' => 'Text',
]);
}
public function clear()
{
$this->form->reset();
}
public function render()
{
return view('livewire.draft-editor');
}
}
?>
Давайте свяжем поля и кнопки Fill и Clear:
<div>
<input
type="text"
wire:model="form.title"
>
<textarea
wire:model="form.body"
></textarea>
<button type="button" wire:click="load">
Fill
</button>
<button type="button" wire:click="clear">
Clear
</button>
</div>
Создайте класс PersonForm
и компонент PersonEditor.
Одна кнопка подставляет имя
Ann и должность Clerk, другая
очищает поля.