laravel中的多个表单

xjreopfe  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(459)

我的项目中有一个向导有一系列表单。
当我单击ist表单的submit按钮时,它将数据保存在db中并重定向到iind表单。在iind窗体中,它们的值从ist窗体显示,并有输入字段和重定向到iii。

I --> II  --> III  up to VII

我的问题是:
假设用户处于iii表单中,用户单击浏览器的back按钮,然后再次单击ii表单的next按钮,由于post方法,值会再次插入db中。
如何处理浏览器的后退和前进按钮,以避免保存重复的数据。如果你需要更多的细节,请告诉我。

yqyhoc1h

yqyhoc1h1#

你可以用3种方式存储数据-
1-最好的方法,在会话中存储所有数据,并在最后一次表单提交时存储。
2-存储第一个表单数据时,在会话中存储最后插入的id,并在每个步骤和更新中检查该id。提交最后一步时取消设置会话值。
3-使用ajax,当您插入第一步数据时,返回最后插入的id,并使用jquery为其添加一个隐藏字段,并随每个请求一起发送。
注意:这只能通过ajax实现。

3okqufwl

3okqufwl2#

你可以用 firstOrCreate 方法插入数据时。所以你的控制器函数看起来像这样:

public function form1(Request $request){
   // validation
   $form1 = Form1::firstOrCreate($request->validated());
   return view('form2')->compact('form1);
}
// and same for second form too.

这将检查您要插入的所有数据是否都存在。如果它存在,它将返回该数据,否则它将创建新的并返回该数据。希望这有帮助。

相关问题