【问题标题】:Laravel Missing required parameters for Route:Laravel 缺少路由所需的参数:
【发布时间】:2019-01-09 13:35:18
【问题描述】:

我们遇到了一个奇怪的错误,我查看了我们的 Git 历史记录,几个月来没有人接触过这个控制器和属于它们的路由。

我们有一个表单,它从页面中获取GETRequest 数据并将它们从第 1 步传递到第 2 步。因此变量被插入到 URL 中,例如 /refer/step_2?name='john'&phone="9999999999" 等。

错误:

Missing required parameters for [Route: step_2] [URI: refer/step/2].

第 2 步(发布请求):

/**
 * Validates data from step and moves on to step 2.
 *
 * @param Request $request
 */
public function step1_request(Request $request) {
    // Remove any additional characters from the lead phone number.
    $request['phone'] = preg_replace('/\D+/', '', $request->phone);
    $request->merge(['phone' => $request['phone']]);

    $validate = [
        'name' => 'required',
        'phone' => 'required|digits:10'
    ];

    $validationErrorMessages = [
        'phone.digits' => 'The phone number must be 10 digits. No spacing, dashes, or special characters.'
    ];

    $validateData = $request->validate($validate, $validationErrorMessages);

    //dd returns fine here.. includes the request data.
    return redirect()->route('step_2', $request); // <- Error happens here. Missing required parameters for [Route: step_2] 
}

第 2 步(刀片)

/**
 * Returns a view to confirm the output from step 1.
 *
 * @param Request $request
 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
 */
public function step_2(Request $request) {
    .....
}

路线:

Route::prefix('refer')->group(function () {
    // Step 1
    Route::get('/', ['uses' => 'ReferController@step_1', 'as' => 'step_1']);
    Route::post('/', ['uses' => 'ReferController@step1_request']);
    // Step 2
    Route::get('step/2', ['uses' => 'ReferController@step_2', 'as' => 'step_2']);
    Route::post('/step/2', ['uses' => 'ReferController@step2_request']);
    // Step 3 
    Route::get('step/3', ['uses' => 'ReferController@step3', 'as' => 'step_3']);
    Route::post('step/3', ['uses' => 'ReferController@step3_request']);
});

重申一下 - 这已经工作了几个月,没有任何问题。我已经清除了一个空白数据库,并将 git head 重置为我们创建它时的初始提交,但我仍然遇到同样的错误。 Laravel 等有什么更新吗?

【问题讨论】:

  • 检查下面的路线重复
  • @SergeyShuryakov 好建议,但一切都很好。没有重复。
  • 好的。这很奇怪。您是否尝试将路线更改为Route::get('step/2', 'ReferController@step_2')-&gt;name('step_2');

标签: laravel laravel-5


【解决方案1】:

通过更改以下内容已解决此问题: return redirect()-&gt;route('step_2', $request)

到: return redirect()-&gt;route('step_2', $request-&gt;all())

这似乎是最近的一个小补丁中 Laravel 5.6 中的一个应用程序漏洞。

【讨论】:

  • 你指的是什么最近的小补丁?
  • 在 Laravel 6.10 中问题仍然存在。
猜你喜欢
  • 2020-08-07
  • 2020-12-25
  • 1970-01-01
  • 2022-01-21
  • 2020-11-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
相关资源
最近更新 更多