Вывод ошибки поля в Livewire
Правила уже стоят в save,
и пустая отправка не создаёт
пост. Человек на странице не
видит, что именно не так: форма
просто не сохраняется, поля
остаются как были. Без подсказки
у поля непонятно, заголовок ли
забыли или текст.
В Blade есть директива, которая показывает текст ошибки для одного имени поля. В шаблоне компонента Livewire она работает так же: сообщения попадают в общий набор ошибок, и их не нужно передавать из класса отдельным массивом.
Давайте в PostForm.php
оставим проверку в начале
save:
<?php
namespace App\Livewire;
use App\Models\Post;
use Livewire\Component;
class PostForm extends Component
{
public $title = '';
public $body = '';
public function save()
{
$this->validate([
'title' => 'required',
'body' => 'required',
]);
Post::create([
'title' => $this->title,
'body' => $this->body,
]);
$this->reset();
}
public function render()
{
return view('livewire.post-form');
}
}
?>
Давайте в шаблоне под полями выведем сообщения:
<div>
<form wire:submit="save">
<input type="text" wire:model="title">
@error('title')
<div>{{ $message }}</div>
@enderror
<textarea wire:model="body"></textarea>
@error('body')
<div>{{ $message }}</div>
@enderror
<button type="submit">
Save
</button>
</form>
</div>
Покажите текст ошибки под полем имени работника.