В моем проекте есть мастер, имеющий ряд форм.
Когда я нажимаю кнопку отправки I-формы, она сохраняет данные в БД и перенаправляет их во II-ю форму. Во II-й форме их значения отображаются из I-й формы, имеют поля ввода и перенаправляют на III.
I --> II --> III up to VII
Мой вопрос:
Предположим, что пользователь находится в III форме, и пользователь нажимает кнопку «Назад» в браузере, а затем снова нажимает на следующую кнопку II формы, значения снова вставляются в БД из-за метода post.
Как работать с браузером назад и вперед, чтобы избежать сохранения дубликатов данных.
Пожалуйста, дайте мне знать, если вам нужно больше деталей.
Вы можете хранить данные тремя способами —
1- Лучший способ, сохранить все данные в сеансе и сохранить в последней форме отправки.
2- Когда вы сохраняете данные первой формы, сохраняйте последний вставленный идентификатор в сеансе и проверяйте его на каждом шаге и обновляйте. При отправке последнего шага сбросить значение сеанса.
3. Используя Ajax, когда вы вставляете данные первого шага, возвращаете последний вставленный идентификатор, а с помощью jquery добавляете скрытое поле для него и отправляете его при каждом запросе.
Примечание: это достигается только с помощью ajax.
Ты можешь использовать firstOrCreate
метод при вставке данных. Итак, ваша функция контроллера будет выглядеть примерно так:
public function form1(Request $request){
// validation
$form1 = Form1::firstOrCreate($request->validated());
return view('form2')->compact('form1);
}
// and same for second form too.
Это позволит проверить, существуют ли все данные, которые вы собираетесь вставить, или нет. Если он существует, он вернет эти данные, иначе он создаст новые и вернет их. Надеюсь это поможет.