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

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

`<?php Route::post('/form', [PostController::class, 'form']); Route::get('/form', [PostController::class, 'form']); ?>`

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

`<?php Route::match(['get', 'post'], '/form', [PostController::class, 'form']); ?>`

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

`<form action="" method="POST"> @csrf <input name="title"> <input name="slug"> <input type="submit"> </form>`

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

`<?php 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'); } } ?>`

С помощью формы спросите у пользователя его город и страну. После отправки формы выведите эти данные над формой в отдельном абзаце.

← →
↑