我的项目中有一个向导有一系列表单。当我单击ist表单的submit按钮时,它将数据保存在db中并重定向到iind表单。在iind窗体中,它们的值从ist窗体显示,并有输入字段和重定向到iii。
I --> II --> III up to VII
我的问题是:假设用户处于iii表单中,用户单击浏览器的back按钮,然后再次单击ii表单的next按钮,由于post方法,值会再次插入db中。如何处理浏览器的后退和前进按钮,以避免保存重复的数据。如果你需要更多的细节,请告诉我。
yqyhoc1h1#
你可以用3种方式存储数据-1-最好的方法,在会话中存储所有数据,并在最后一次表单提交时存储。2-存储第一个表单数据时,在会话中存储最后插入的id,并在每个步骤和更新中检查该id。提交最后一步时取消设置会话值。3-使用ajax,当您插入第一步数据时,返回最后插入的id,并使用jquery为其添加一个隐藏字段,并随每个请求一起发送。注意:这只能通过ajax实现。
3okqufwl2#
你可以用 firstOrCreate 方法插入数据时。所以你的控制器函数看起来像这样:
firstOrCreate
public function form1(Request $request){ // validation $form1 = Form1::firstOrCreate($request->validated()); return view('form2')->compact('form1); } // and same for second form too.
这将检查您要插入的所有数据是否都存在。如果它存在,它将返回该数据,否则它将创建新的并返回该数据。希望这有帮助。
2条答案
按热度按时间yqyhoc1h1#
你可以用3种方式存储数据-
1-最好的方法,在会话中存储所有数据,并在最后一次表单提交时存储。
2-存储第一个表单数据时,在会话中存储最后插入的id,并在每个步骤和更新中检查该id。提交最后一步时取消设置会话值。
3-使用ajax,当您插入第一步数据时,返回最后插入的id,并使用jquery为其添加一个隐藏字段,并随每个请求一起发送。
注意:这只能通过ajax实现。
3okqufwl2#
你可以用
firstOrCreate
方法插入数据时。所以你的控制器函数看起来像这样:这将检查您要插入的所有数据是否都存在。如果它存在,它将返回该数据,否则它将创建新的并返回该数据。希望这有帮助。