How to redirect confirmation page after submitting form in Laravel?

ぐ巨炮叔叔 提交于 2020-05-15 03:46:25

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!