3. Создание форм на основе Laravel

https://itproger.com/course/laravel/3

В файле contact.blade.php создаём форму:

 <form action="/contact/submit" method="post">
        @csrf

        <div class="form-group">
            <label for="name">Введите имя:</label>
            <input type="text" name="name" placeholder="Введите имя" id="name" class="form-control">
        </div>
        <div class="form-group">
            <label for="email">Email:</label>
            <input type="text" name="email" placeholder="Введите email" id="email" class="form-control">
        </div>
        <div class="form-group">
            <label for="subject">Тема сообщения:</label>
            <input type="text" name="subject" placeholder="Введите имя" id="subject" class="form-control">
        </div>
        <div class="form-group">
            <label for="message">Тема сообщения:</label>
            <textarea name="message" id="message" cols="30" rows="10" class="form-control" placeholder="Введите сообщение..."></textarea>
        </div>
        <button class="btn btn-success" type="success">Отправить</button>
    </form>

@csrf — это ключ, который служит для проверки подлинности отправки формы. Его нужно обязательно ставить во все формы для корректной отправки.

В routes/web.php пропишем путь для приёма нашей формы:

Route::post('/contact/submit', function () {
    return "Окей";
});

Так как форма отправляется методом post, то используем Route::post .

Именование обработчиков URL-адресов

Добавим имя нашему обработчику URL:

Route::post('/contact/submit', function () {
    return "Окей";
})->name('contact-form');

Теперь в формах можно указывать не URL адрес, а имя обработчика:

<form action="{{route('contact-form')}}" method="post">

Сейчас, при необходимости, можно сменить урл в Route::post(‘/contact/submit’ , и он автоматически поменяется везде, где указано имя нашего обработчика.

Сделаем везде именные обработчики:

Route::get('/', function () {
return view('home');
})->name('home');

Route::get('/about', function () {
return view('about');
})->name('about');

Route::get('/contact', function () {
return view('contact');
})->name('contact');

Route::get('/posts/all', function () {
return view('posts.all');
})->name('post-all');

Теперь везде можно использовать, как прямые урлы, так и именованные пути, но рекомендуется именованные пути.

Изменим в файле app.blade.php :

<a class="p-2 text-dark" href="{{route('home')}}">Главная</a>
<a class="p-2 text-dark" href="{{route('contact')}}">Контакты</a>
<a class="p-2 text-dark" href="{{route('about')}}">О сайте</a>

На сайте ничего поменяться не должно.

При отправке формы выведем все данные, которые мы отправляем формой. В routes/web.php запишем:

Route::post('/contact/submit', function () {
    return Request::all();
})->name('contact-form');

Выводится должно то, что Вы впишите в форму, т.е. :

{
  "_token": "PNaY7U3JctdYNGK2muinJTJi0fLSSYn76x1SFHeM",
  "name": "Дмитрий",
  "email": "[email protected]",
  "subject": "Дмитрий",
  "message": "Привет, это я!"
}

Передача формы методом get

Для этого вставим в method в contact.blade.php get вместо post :

 <form action="{{route('contact-form')}}" method="get">

И в route/web.php также поменяем:

Route::get('/contact/submit', function () {
    return Request::all();
})->name('contact-form');

Теперь форма будет передаваться get методом, и наши данные будут видны в url.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии