Формы в Livewire
На многих страницах есть поля ввода: заголовок, длинный текст, список вариантов, галочка, число. Человек заполняет их и ждёт, что данные куда-то попадут без потери того, что уже набрано на экране.
В привычном Laravel форма отправляется на сервер целиком. Маршрут ведёт в контроллер, тот читает запрос, проверяет поля и решает, что сохранить или куда перейти дальше. Страница при этом часто перезагружается, и картинка на экране меняется одним большим куском.
Компонент Livewire тоже может рисовать форму, но связь полей с кодом устроена иначе. Введённые значения живут в публичных свойствах класса компонента, рядом с методами, которые обрабатывают кнопки и отправку. Не обязательно заводить отдельный контроллер ради одной формы на странице: действие вызывает метод того же компонента, где уже лежат все текущие значения полей.
При этом страница не обязана перезагружаться целиком, как при классической отправки. Livewire обменивается с сервером частями разметки и подменяет только нужный фрагмент. Для человека форма ведёт себя привычно, а для разработчика логика остаётся рядом с шаблоном компонента.
Обычная форма Laravel по-прежнему уместна, когда страница один раз отдала данные и ушла дальше. Форма компонента остаётся на месте и держит введённое у себя в свойствах, пока компонент живёт на странице.
Со всем этим мы и будем разбираться в рамках данного раздела.