РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pplrSpRdWI 13 of 210 menu

Сохранение ввода формы при редиректе в Laravel

Представьте форму регистрации или комментария. Пользователь заполнил несколько полей, нажал «Отправить», а сервер нашёл ошибку - например, пустой email. Вы делаете редирект назад на форму. Без дополнительной настройки все поля окажутся пустыми: придётся вводить всё заново. Это раздражает и выглядит как баг.

Нужно сохранить отправленные данные на один следующий запрос и подставить их обратно в value полей. При редиректе это делают методом withInput, а в шаблоне читают через old.

В контроллере при ошибке возвращаемся назад и сохраняем ввод:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PostController extends Controller { public function store(Request $request) { if (!$request->filled('email')) { return back()->withInput(); } return redirect('/success'); } } ?>

Данные формы попадают во flash-сессию на один запрос. В Blade их достают хелпером old - по имени поля:

<form method="POST" action="/posts"> @csrf <input type="text" name="email" value="{{ old('email') }}" > <button type="submit">send</button> </form>

Если old('email') есть - в поле подставится то, что пользователь уже вводил. Если нет (первый заход на форму) - будет пустая строка.

Спросите у пользователя email с помощью формы. Если email пустой, вернитесь назад с сохранением ввода и покажите в поле то, что уже вводили.

Если email заполнен, выполните редирект на другое действие и выведите email в представлении.

Добавьте в форму ещё одно поле и тоже восстановите его через old.

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить