在 Laravel 中提交表单后如何重定向确认页面?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/41156935/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 14:55:42  来源:igfitidea点击:

How to redirect confirmation page after submitting form in Laravel?

phpformslaravellaravel-5.2

提问by Chonchol Mahmud

I have a form.This action is:

我有一个form。这个动作是:

<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.

如果每个申请人/每个人都提交了这个表格,那么它会创建一个 ID 并在确认页面中使用他提交的数据重定向它。

But after submitted i have got:

但提交后我得到了:

../public/career/save/%7Bid%7D

../public/career/save/%7Bid%7D

I can manually type ../public/career/confirmation/14and its work perfectly.Now i want after submitting form it will redirect this ../public/career/confirmation/ID. IDis dynamic.How can i do that? Thanks in advance.

我可以../public/career/confirmation/14完美地手动输入和它的工作。现在我想在提交表单后它会重定向这个../public/career/confirmation/IDID是动态的。我该怎么做?提前致谢。

采纳答案by Qazi

you can redirect after submission by doing this

您可以通过这样做在提交后重定向

return redirect()->to('career/confirmation/'.$id); //pass your dynamic id

return redirect()->to('career/confirmation/'.$id); //pass your dynamic id

or by doing this

或者通过这样做

return redirect()->route('confirmationMsg',['id'=>$id]); //pass your dynamic id

return redirect()->route('confirmationMsg',['id'=>$id]); //pass your dynamic id

DO it like this, $id = $applicant->id;

像这样做, $id = $applicant->id;

replace your this line

替换你的这条线

return redirect(route('confirmationMsg'));with this one

return redirect(route('confirmationMsg'));有了这个

return redirect()->route('confirmationMsg',['id'=>$id]); //pass your dynamic id

return redirect()->route('confirmationMsg',['id'=>$id]); //pass your dynamic id

回答by AddWeb Solution Pvt Ltd

Provide your post route which you are using for form action i.e. career/save/{id}. You can see other correction.

提供您用于表单操作的发布路径,即career/save/{id}. 您可以查看其他更正。

After $applicant->save();action, $applicant->idshould be the last inserted applicant id so use it while redirect().

之后$applicant->save();的动作,$applicant->id应该是最后插入的申请ID,以便使用它的同时redirect()

Further we translate %7Bid%7D, it's {id}. Means that idis cause here.

我们进一步翻译%7Bid%7D,它是{id}. 意思id是这里的原因。

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...!

这应该对你有用......!

回答by Sayantan Das

after $applicant->save();, get the id $id = $applicant->id;then redirect, return redirect(route('confirmationMsg', [id => $id]));

之后$applicant->save();,获取 id $id = $applicant->id;然后重定向,return redirect(route('confirmationMsg', [id => $id]));

回答by Hasib Kamal

Redirection to a specific path :

重定向到特定路径:

return redirect('/routepath');

Redirection to the current path :

重定向到当前路径:

return redirect()->back();