Отправка методом GET
Давайте теперь научимся отправлять формы методом GET
и получать их данные в контроллере. Сделаем для этого два метода контроллера. Первый метод будет показывать форму, а второй метод будет обрабатывать данные этой формы после ее отправки. Для начала сделаем два роута.
Первый роут для показа формы:
routes/web.php<?php
Route::get('/form', [PostController::class, 'form']);
Второй роут для обработки данных отправленной формы:
routes/web.php<?php
Route::get('/result', [PostController::class, 'result']);
Теперь в представлении сделаем нашу форму. В атрибуте action
не забудем указать URL роута, который отвечает за обработку формы:
resources/views/post/form.blade.php<form action="/result">
<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()
{
}
public function form()
{
}
}
Действие form
будет показывать форму:
app/Http/Controllers/PostController.php<?php
use Illuminate\Http\Request; // подключим класс Request
public function form()
{
return view('post.form');
}
А действие result
будет обрабатывать данные отправленной формы. Для этого мы должны внедрить в него объект запроса:
app/Http/Controllers/PostController.php<?php
use Illuminate\Http\Request; // подключим класс Request
public function result(Request $request)
{
}
Данные формы можно получить с помощью метода input
объекта запроса. Параметром этот метод принимает имя инпута. Давайте получим и выведем отправленные данные:
app/Http/Controllers/PostController.php<?php
use Illuminate\Http\Request; // подключим класс Request
public function result(Request $request)
{
dump($request->input('title'));
dump($request->input('slug'));
}
А теперь передадим данные нашей формы в представление:
app/Http/Controllers/PostController.php<?php
use Illuminate\Http\Request; // подключим класс Request
public function result(Request $request)
{
$title = $request->input('title');
$slug = $request->input('slug');
return view('post.result', [
'title' => $title, 'slug' => $slug
]);
}
В представлении метода result
выведем переданные переменные:
resources/views/post/result.blade.php<h1>{{ $title }}</h1>
<p>{{ $slug }}</p>