【问题标题】:How to redirect into another page after inserting form data in Laravel?在 Laravel 中插入表单数据后如何重定向到另一个页面?
【发布时间】:2017-04-26 23:53:20
【问题描述】:

我有一个带有一些input 字段的表格。现在我想要,如果有人submit 这个form 然后他会redirect 到我写确认信的另一个页面。我已经搜索但我不能找到我的问题的正确答案。

我的控制器:

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['fathers_name'] = $request->input('fathers_name');
    $applicant['mothers_name'] = $request->input('mothers_name');
    $applicant['spouses_name'] = $request->input('spouses_name');
    $applicant['nationality'] = $request->input('nationality');
    $applicant['present_add'] = $request->input('present_add');

    $applicant->save();
    \Session::flash('flash_message','Application has been successfully submitted.');
    return redirect(route('confirmationMsg'));
}

我的路线:

Route::group(['prefix' => 'career'], function () {
    Route::get('apply', ['as' => 'addApplicant', 'uses' => 'ApplicantController@create']);
    Route::post('save', ['as' => 'saveApplicant', 'uses' => 'ApplicantController@store']);
    Route::get('submitted', ['as' => 'confirmationMsg', 'uses' => 'ApplicantController@store']);
});

这段代码有错误:

查询异常在 C:\xampp\htdocs\NoticeBoard\vendor\laravel\framework\src\Illuminate\Database\Connection.php 第 729 行:SQLSTATE [23000]:违反完整性约束:1048 列 'name' 不能为空 (SQL: 插入applicants (name, sex, marital_status

谁能帮助我问题出在哪里或我该怎么做?提前致谢。

【问题讨论】:

  • 检查您的输入是否有正确的名称:您的错误没有得到输入名称
  • @DiegoCespedes 这不是这种问题。它的重定向问题。

标签: php mysql laravel laravel-5.2


【解决方案1】:

试试这个:

return redirect('your_route');

Route::get('your_route', function () {
    // return view from here or make a function call from a controller
});

【讨论】:

  • @ChoncholMahmud 实际上,您问题中的代码是正确的,return redirect('your_route'); - 此答案中的代码将不起作用,因为您必须将 URI 传递给 redirect() 而不是路由名称。如果你想使用路由名称,你应该在你的问题redirect(route('route_name'))redirect()->route('route_name') 中使用它。而且您的错误与路由无关,并且无论如何都重定向。您遇到了与数据库相关的错误。
【解决方案2】:

试试这个:-

return redirect()->route('confirmationMsg');

【讨论】:

    【解决方案3】:

    我可以看到三个关于redirect()route() 用法的答案,但您的代码在这里是正确的。你甚至接受了其中一个答案(为什么?)。

    错误显示name(可能还有其他几个)字段为空,因此您需要确保从表单中传递这些字段。您可以在 store() 函数的开头使用此代码来检查这一点:

    dd($request->all());
    

    或者,您可以在迁移文件中将这些字段之一设置为 nullable()

    $table->string('name')->nullable();
    

    【讨论】:

    • 我已经两次调用方法ApplicantController@store 这就是为什么当它去submitted 路由然后它再次调用ApplicantController@store 方法。现在我创建了另一个方法并重定向到该方法以显示确认页面。这就是我接受这个答案的原因。我的代码现在pastebin.com/3gPhy5Fz
    • 好吧,答案并没有解决问题,而且代码有误。
    • 那么告诉我哪一个是解决这个问题的完美方法?我想你理解我的问题。
    • 我想在这种情况下,您应该描述您是如何解决问题的并勾选您自己的答案。这就是 StackOverflow 的工作原理。
    【解决方案4】:

    试试下面这个:

    return Redirect::to(url);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2013-06-14
      相关资源
      最近更新 更多