Создадим форму для страницы контактов и научимся получать из неё данные.
Создание HTML-формы
В файле resources/views/contact.blade.php создадим форму <form>:
<form action="/contact/admin" method="post">
</form>
Атрибут action указывает URL-адрес для обработки данных формы (/contact/admin). Атрибут method устанавливаем в post. Обработчик этого URL-адреса создадим позже.
Добавим поля ввода данных, используя класс form-group из Bootstrap для стилизации:
<div class="form-group">
<label for="name">Введите имя</label>
<input type="text" name="name" id="name" placeholder="Введите имя" class="form-control">
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" name="email" id="email" placeholder="Введите email" class="form-control">
</div>
<div class="form-group">
<label for="subject">Тема сообщения</label>
<input type="text" name="subject" id="subject" placeholder="Тема сообщения" class="form-control">
</div>
<div class="form-group">
<label for="message">Сообщение</label>
<textarea name="message" id="message" placeholder="Введите сообщение" class="form-control"></textarea>
</div>
<button type="submit" class="btn btn-success">Отправить</button>
HTML-форма готова.
Обработчик URL-адреса и защита от CSRF
В файле routes/web.php создадим обработчик для URL-адреса /contact/admin и добавим защиту от CSRF-атак:
Route::post('/contact/admin', function (IlluminateHttpRequest $request) {
return $request->all();
})->name('contact.form');
Используем функцию post, так как данные передаются методом POST. Метод name(‘contact.form’) задает имя маршрута. В форму автоматически добавится скрытое поле с токеном CSRF. Получаем все данные из запроса с помощью $request->all().
Использование именованных маршрутов
В файле routes/web.php мы уже добавили имя маршруту contact.form. В шаблоне contact.blade.php используем имя маршрута вместо URL-адреса:
<form action="{{ route('contact.form') }}" method="post">
</form>
Это упрощает изменение URL-адреса – достаточно изменить его только в routes/web.php. В файле resources/views/layouts/app.blade.php (или аналогичном) можно аналогично изменить ссылки в меню.
Вывод данных формы
Для более удобного отображения данных используем функцию dd():
Route::post('/contact/admin', function (IlluminateHttpRequest $request) {
return dd($request->all());
});
Данные отображаются в читабельном формате, корректно обрабатывая кириллицу.
Мы создали форму для страницы контактов, обработчик URL-адреса, добавили защиту от CSRF-атак, использовали именованные маршруты и научились получать данные из формы.