Полный цикл в digital

Форма и обработка в одном действии

Давайте теперь сделаем одно действие и для показа формы, и для ее последующей обработки. Для этого в маршрутах мы должны разрешить обращение к методу контроллера и методом GET, и методом POST:

routes/web.php<?php
Route::post('/form', [PostController::class, 'form']);
Route::get('/form', [PostController::class, 'form']);

В приведенном выше коде у нас все дублируется, кроме имени метода. В этом случае эти два роута можно объединить в один следующим образом:

routes/web.php<?php
Route::match(['get', 'post'], '/form', [PostController::class, 'form']);

В самой форме мы должны исправить значение атрибута action, чтобы форма отправлялась на текущую страницу:

resources/views/post/form.blade.php<form action="" method="POST">
	@csrf
	<input name="title">
	<input name="slug">
	<input type="submit">
</form>

Давайте теперь реализуем наше действие. Его код будет выполнятся два раза. При первом заходе мы просто должны показать форму, а после ее отправки - обработать ее данные. Разрулим оба варианта с помощью условия. В этом нам поможет метод has, проверяющий наличие данных инпута в объекте запроса:

app/Http/Controllers/PostController.php<?php
use Illuminate\Http\Request; // подключим класс Request

class PostController extends Controller
{
    public function form(Request $request)
    {
        if ($request->has('title') and $request->has('slug')) {
            dump($request->input('title'));
            dump($request->input('slug'));
        }
        
        return view('post.form');
    }
}
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг