在 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/IDID 是动态的。我该怎么做?提前致谢。

【问题讨论】:

你能把你的store 函数发布到实际重定向的地方吗.. 甚至可以在表单操作中尝试url('career/save/'.id @NishanthMatha 问题已更新...... 它给出了一个错误Use of undefined constant id - assumed 'id' 动作应该是action="career/save/id" 【参考方案1】:

您可以在提交后立即redirect()

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

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

在您的 save() 方法之后,添加这一行

$id = $applicant-&gt;id;

替换

return redirect(route('confirmationMsg'));

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

【讨论】:

我收到了syntax error, unexpected '-&gt;' (T_OBJECT_OPERATOR) 这个错误,您的解决方案。 它现在转到../public/career/save 路线。但是如果我在$applicant-&gt;save(); 之后添加$id = $applicant-&gt;id; 那么它就可以工作了。 是的,你几乎是对的,在你的 save(); 方法之后编码这一行 $id = $applicant-&gt;id; 然后写我提到的 redirect()-&gt;route()....【参考方案2】:

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

$applicant-&gt;save(); 操作之后,$applicant-&gt;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-&gt;save();之后,获取id $id = $applicant-&gt;id; 然后重定向,return redirect(route('confirmationMsg', [id =&gt; $id]));

【讨论】:

它在你的路上去../public/career/save路线。 但是根据你的路由定义confirmationMsg应该会返回到你想要的页面【参考方案4】:

重定向到特定路径:

return redirect('/routepath');

重定向到当前路径:

return redirect()->back();

【讨论】:

以上是关于在 Laravel 中提交表单后如何重定向确认页面?的主要内容,如果未能解决你的问题,请参考以下文章

Ajax表单提交后如何将用户重定向到另一个页面

Ajax 表单提交后如何将用户重定向到另一个页面?

发送序列化的表单数据并接收带有表单和会话数据的 PHP Laravel 重定向

页面在验证时保持重定向

提交表单后如何重定向页面?

重定向到同一页面php后避免表单重新提交[重复]