问题
I have a form
.This action is:
<form action="{{url('career/save/{id}')}}" method="POST" enctype="multipart/form-data">
Route:
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']);
});
Controller:
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"));
}
If every applicant/everyone submit this form then it will create an ID and redirect this in confirmation page with his submitted data.
But after submitted i have got:
../public/career/save/%7Bid%7D
I can manually type ../public/career/confirmation/14
and its work perfectly.Now i want after submitting form it will redirect this ../public/career/confirmation/ID
. ID is dynamic.How can i do that? Thanks in advance.
回答1:
you can redirect after submission by doing this
return redirect()->to('career/confirmation/'.$id); //pass your dynamic id
or by doing this
return redirect()->route('confirmationMsg',['id'=>$id]); //pass your dynamic id
DO it like this, $id = $applicant->id;
replace your this line
return redirect(route('confirmationMsg'));
with this one
return redirect()->route('confirmationMsg',['id'=>$id]); //pass your dynamic id
回答2:
Provide your post route which you are using for form action i.e. career/save/{id}
. You can see other correction.
After $applicant->save();
action, $applicant->id
should be the last inserted applicant id so use it while redirect()
.
Further we translate %7Bid%7D
, it's {id}
. Means that id
is cause here.
Try below code:
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]))
}
This should work for you...!
回答3:
after $applicant->save();
, get the id
$id = $applicant->id;
then redirect, return redirect(route('confirmationMsg', [id => $id]));
回答4:
Redirection to a specific path :
return redirect('/routepath');
Redirection to the current path :
return redirect()->back();
来源:https://stackoverflow.com/questions/41156935/how-to-redirect-confirmation-page-after-submitting-form-in-laravel