Введённые значения остаются в Livewire
Отправка с пустым заголовком
или с запрещённым словом не
создаёт пост, зато под полями
видны ошибки. Человек исправляет
текст прямо там, где набирал,
и не теряет остальной ввод.
Такое поведение не случайность:
оно следует из того, как устроены
свойства и порядок шагов
в save.
Значения формы живут в публичных
свойствах компонента, а поля
связаны с ними через
wire:model. Пока свойство
не сбросили, в шаблоне остаётся
тот же текст. Сброс после
успешного сохранения стоит
в конце метода: при ошибке
выполнение обрывается раньше,
и до него очередь не доходит.
Давайте ещё раз посмотрим
на порядок в save -
сначала проверка и возможный
выход, затем создание записи
и только потом очистка полей:
<?php
public function save()
{
$this->validate([
'title' => 'required|min:3',
'body' => 'required',
], [
'title.required' => 'Enter a title',
'body.required' => 'Enter a text',
], [
'title' => 'heading',
'body' => 'text',
]);
if ($this->title === 'Admin') {
$this->addError('title', 'This title is reserved');
return;
}
Post::create([
'title' => $this->title,
'body' => $this->body,
]);
$this->reset();
}
?>
Добейтесь, чтобы при ошибке набранное имя работника осталось в поле.