Отправка методом POST
Давайте теперь научимся отправлять формы методом POST
. Внесем необходимые изменения. Для начала в роуте, отвечающем за обработку формы, поменяем метод get
на метод post
:
routes/web.php<?php
Route::post('/result', [PostController::class, 'result']);
Теперь в форме добавим атрибут method
со значением POST
:
resources/views/post/form.blade.php<form action="/result" method="POST">
<input name="title">
<input name="slug">
<input type="submit">
</form>
Далее по правилам Laravel нам необходимо добавить защиту от CSRF
атаки. Технически мы должны в нашу форму добавить специальный скрытый инпут, содержащий секретную строку (токен). На практике нам просто нужно вставить специальную команду Blade
:
resources/views/post/form.blade.php<form action="/result" method="POST">
@csrf
<input name="title">
<input name="slug">
<input type="submit">
</form>
Это все изменения, наш контроллер останется неизменным:
app/Http/Controllers/PostController.php<?php
use Illuminate\Http\Request; // подключим класс Request
class PostController extends Controller
{
public function result(Request $request)
{
$title = $request->input('title');
$slug = $request->input('slug');
return view('post.result', [
'title' => $title, 'slug' => $slug
]);
}
public function form()
{
return view('post.form');
}
}