在 Laravel 中提交表单后如何重定向确认页面?
Posted
技术标签:
【中文标题】在 Laravel 中提交表单后如何重定向确认页面?【英文标题】:How to redirect confirmation page after submitting form in Laravel? 【发布时间】:2017-04-30 15:06:16 【问题描述】:我有一个form
。这个操作是:
<form action="url('career/save/id')" method="POST" enctype="multipart/form-data">
路线:
Route::group(['prefix' => 'career'], function ()
Route::get('apply', ['as' => 'addApplicant', 'uses' => 'ApplicantController@create']);
Route::post('save', ['as' => 'saveApplicant', 'uses' => 'ApplicantController@store']);
Route::get('confirmation/id', ['as' => 'confirmationMsg', 'uses' => 'ApplicantController@show']);
);
控制器:
public function store(Request $request)
$applicant = new Applicant();
$applicant['name'] = $request->input('name');
$applicant['sex'] = $request->input('sex');
$applicant['marital_status'] = $request->input('marital_status');
$applicant['date_of_birth'] = $request->input('date_of_birth');
$applicant['email'] = $request->input('email');
$applicant->save();
\Session::flash('flash_message','Application has been successfully submitted.');
return redirect(route('confirmationMsg'));
public function show($id)
$applicantData = Applicant::whereId($id)->first();
return view('applicant.confirmation',compact("applicantData"));
如果每个申请人/每个人都提交此表格,那么它将创建一个 ID 并在确认页面中将其重定向到他提交的数据。
但是提交后我得到了:
../public/career/save/%7Bid%7D
我可以手动输入../public/career/confirmation/14
,它的工作很完美。现在我希望在提交表单后它会重定向这个../public/career/confirmation/ID
。 ID 是动态的。我该怎么做?提前致谢。
【问题讨论】:
你能把你的store
函数发布到实际重定向的地方吗.. 甚至可以在表单操作中尝试url('career/save/'.id
@NishanthMatha 问题已更新......
它给出了一个错误Use of undefined constant id - assumed 'id'
动作应该是action="career/save/id"
【参考方案1】:
您可以在提交后立即redirect()
:
return redirect()->to('career/confirmation/'.$id); //pass your dynamic id
或
return redirect()->route('confirmationMsg',['id'=>$id]); //pass your dynamic id
.
在您的 save()
方法之后,添加这一行
$id = $applicant->id;
替换
return redirect(route('confirmationMsg'));
与
return redirect()->route('confirmationMsg',['id'=>$id]); //pass your dynamic id
.
【讨论】:
我收到了syntax error, unexpected '->' (T_OBJECT_OPERATOR)
这个错误,您的解决方案。
它现在转到../public/career/save
路线。但是如果我在$applicant->save();
之后添加$id = $applicant->id;
那么它就可以工作了。
是的,你几乎是对的,在你的 save();
方法之后编码这一行 $id = $applicant->id;
然后写我提到的 redirect()->route()....
行【参考方案2】:
提供您用于表单操作的发布路线,即career/save/id
。您可以查看其他更正。
在$applicant->save();
操作之后,$applicant->id
应该是最后插入的申请人 ID,所以在 redirect()
时使用它。
我们进一步翻译%7Bid%7D
,它是id
。表示id
是这里的原因。
试试下面的代码:
public function store(Request $request)
$applicant = new Applicant();
$applicant['name'] = $request->input('name');
$applicant['sex'] = $request->input('sex');
$applicant['marital_status'] = $request->input('marital_status');
$applicant['date_of_birth'] = $request->input('date_of_birth');
$applicant['email'] = $request->input('email');
$applicant->save();
//Get last inserted applicant id...
$applicantId = $applicant->id;//Check your correspond table for primary key column label is 'id'.
\Session::flash('flash_message','Application has been successfully submitted.');
return redirect(route('confirmationMsg', [id => $applicantId]))
这应该适合你...!
【讨论】:
【参考方案3】:在$applicant->save();
之后,获取id
$id = $applicant->id;
然后重定向,return redirect(route('confirmationMsg', [id => $id]));
【讨论】:
它在你的路上去../public/career/save
路线。
但是根据你的路由定义confirmationMsg
应该会返回到你想要的页面【参考方案4】:
重定向到特定路径:
return redirect('/routepath');
重定向到当前路径:
return redirect()->back();
【讨论】:
以上是关于在 Laravel 中提交表单后如何重定向确认页面?的主要内容,如果未能解决你的问题,请参考以下文章