Після збереження форма, на якій користувач лишається (коментар, повідомлення в чаті, додавання рядка в список), має очиститися.
reset() повертає властивості до значень, оголошених у класі:
public string $body = '';
public ?int $rating = null;
public function addComment(): void
{
$this->validate();
$this->post->comments()->create($this->only(['body', 'rating']));
$this->reset('body', 'rating'); // лише ці поля
// $this->reset(); // усі публічні властивості
}
Обережно з reset() без аргументів: він скидає всі публічні властивості компонента, включно з тими, що встановлено в mount() (наприклад, $post), - і компонент «губить» свій контекст. Безпечніше явно перелічувати поля або тримати поля форми в об'єкті форми й скидати лише його: $this->form->reset().
pull() - отримати значення і одразу скинути:
$this->post->comments()->create($this->pull(['body', 'rating']));
resetExcept([...]) - скинути все, крім указаного.
Помилки валідації зберігаються окремо від значень:
$this->resetValidation(); // усі помилки
$this->resetValidation('body'); // помилку одного поля
$this->resetErrorBag(); // те саме, що resetValidation()
Типовий випадок - кнопка «Скасувати» в модальному вікні: скинути і поля, і помилки, щоб при наступному відкритті форма була чистою.
Що варто знати:
- типізована властивість без значення за замовчуванням (
public string $title;) післяreset()стає неініціалізованою, і звернення до неї в шаблоні кине помилку. Задавайте значення за замовчуванням; reset()не викликає хуківupdated- це зміна на сервері, а не з браузера;- поля з
wire:modelбез.liveочищаються в інтерфейсі, бо після відповіді сервера Livewire морфить DOM з новими значеннями; - для полів, якими керує сторонній JavaScript (редактор тексту, вибір дати під
wire:ignore), скидання властивості не очистить сам віджет - йому треба надіслати подію.