Laravel 函数参数太少

Laravel Too few arguments to function

我有一个使用 Laravel 生成代码的简单应用程序,现在我正尝试使用 url.

将唯一 ID 传递给我的控制器

这是应该接收 ID 的方法:

 public function code($code_id)
 {
     $settings = Setting::find($code_id);

     return view('pages.settings.code', compact('settings'));
 }

这是我传递 ID 的视图文件:

<a href="{{ route('settings.code', $settings->code_id) }}">
    {{ __('Generate Code') }}
</a>

当我检查 URL 时,我得到:

http://127.0.0.1:8001/settings/code?K1zMXRZG4

这是我的路线:

Route::get('settings/code', [
    'as' => 'settings.code', 
    'uses' => 'SettingController@code'
]);

Route::resource('settings', "SettingController");

但我收到以下错误:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_RECOVERABLE_ERROR)
Too few arguments to function App\Http\Controllers\SettingController::code(), 0 passed and exactly 1 expected

我的代码有什么问题?

您需要定义任何应该传递给路由中方法的参数:

Route::get('/settings/code/{code_id}', 'MyController@code')
    ->name('settings.code');

这会将 $code_id 传递给控制器​​中的 code() 方法。

如果您没有在路由中定义参数,它将作为参数传递到 Request-object 中 - 就像所有查询字符串一样 - 您需要在控制器中像这样获取它:

$code_id = $request->query('code_id');