Проверка при отправке в Livewire
На /posts форма отправляет
save, и пост создаётся
из того, что лежит в $title
и $body. Если одно из
полей пустое или оба сразу,
в таблице всё равно появится
новая строка. После успеха поля
очищаются, а бессмысленная запись
остаётся в базе.
Нужен барьер до создания записи: сравнить свойства с правилами и остановить метод, если данные не подходят. В компоненте для этого вызывают проверку прямо в методе сохранения - тем же приёмом, что в контроллере, только проверяются не поля запроса, а публичные свойства формы.
Давайте в начале save
в PostForm.php передадим
массив правил для заголовка
и текста, а создание и сброс
оставим после него:
<?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');
}
}
?>
Не сохраняйте работника с пустым именем.