Правила формы в Livewire
Давайте теперь сохраним заметку с пустым заголовком. Запрос уходит на сервер, строка попадает в базу, а человек даже не видит, что поле обязательное.
В классе формы правила задают
методом rules. Перед
записью компонент просит
объект формы проверить поля;
при ошибке сохранение
не выполняется.
Давайте заведём NoteForm
с обязательным заголовком:
<?php
namespace App\Livewire\Forms;
use Livewire\Form;
class NoteForm extends Form
{
public $title = '';
public function rules()
{
return [
'title' => 'required',
];
}
}
?>
Давайте создадим компонент
NoteEditor:
php artisan make:livewire NoteEditor --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/note', function () {
return view('posts-note');
});
?>
<x-layout>
<livewire:note-editor />
</x-layout>
Давайте в save проверим
форму и запишем результат
в $note:
<?php
namespace App\Livewire;
use App\Livewire\Forms\NoteForm;
use Livewire\Component;
class NoteEditor extends Component
{
public NoteForm $form;
public $note = '';
public function save()
{
$this->form->validate();
$this->note = 'Saved';
}
public function render()
{
return view('livewire.note-editor');
}
}
?>
Давайте выведем ошибку под полем и кнопку сохранения:
<div>
<input
type="text"
wire:model="form.title"
>
@error('form.title')
<div>{{ $message }}</div>
@enderror
<button type="button" wire:click="save">
Save
</button>
<div>{{ $note }}</div>
</div>
Создайте класс EmployeeRules
и компонент EmployeeNote.
Пустое имя работника
не сохраняется, под полем
видно сообщение.