我有一个简单的应用程序,可以使用Laravel生成一些代码,现在我正尝试将唯一ID传递给带有URL的控制器。
此方法应接收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
我的代码有什么问题?
答案 0 :(得分:4)
您需要定义路由中应传递给方法的所有参数:
Route::get('/settings/code/{code_id}', 'MyController@code')
->name('settings.code');
这会将$code_id
传递到控制器中的code()
方法。
如果您未在路由中定义参数,则它将作为参数传递给Request
对象-像所有查询字符串一样,您需要在控制器中像这样获取它:>
$code_id = $request->query('code_id');