我尝试将路由参数传递给控制器,但是我收到此错误:Argument 2 passed to App\Http\Controllers\JurnalController::store() must be an instance of App\Http\Requests\JurnalRequest, none given
以下是代码..
路线:
Route::get('/edisi/{id}', 'JurnalController@store');
控制器:
public function store($id, JurnalRequest $request) {
$input = $request->all();
//Input PDF
if ($request->hasFile('file')) {
$input['file'] = $this->uploadPDF($request);
}
$jurnal = Edisi::findOrFail($id)->jurnal()->create($input);
return redirect('jurnal');
}
所以我的问题是如何正确传递路由参数?谢谢
新路线:
Route::get('/', function () {
return view('pages/home');
});
Route::group(['middleware' => ['web']], function () {
Route::get('edisi', 'EdisiController@index');
Route::get('edisi/create', 'EdisiController@create');
Route::get('edisi/{edisi}', 'EdisiController@show');
Route::post('edisi', 'EdisiController@store');
Route::get('edisi/{edisi]', 'EdisiController@edit');
Route::patch('edisi/{edisi}', 'EdisiController@update');
Route::delete('edisi/{edisi}', 'EdisiController@destroy');
});
Route::get('/edisi/{id}', 'JurnalController@storejurnal');
Route::group(['middleware' => ['web']], function () {
Route::get('jurnal', 'JurnalController@index');
Route::get('jurnal/create', 'JurnalController@create');
Route::get('jurnal/{jurnal}', 'JurnalController@show');
Route::post('jurnal', 'JurnalController@storejurnal');
Route::get('jurnal/{jurnal}/edit', 'JurnalController@edit');
Route::patch('jurnal/{jurnal}', 'JurnalController@update');
Route::delete('jurnal/{jurnal}', 'JurnalController@destroy');
});
新店铺方法:
public function storejurnal(JurnalRequest $request, $id) {
$input = $request->all();
//Input PDF
if ($request->hasFile('file')) {
$input['file'] = $this->uploadPDF($request);
}
//Insert data jurnal
$jurnal = Edisi::findOrFail($id)->jurnal()->create($input);
return redirect('jurnal');
}
答案 0 :(得分:3)
使用资源控制器时,store方法不接受除Request实例之外的任何其他参数。尝试更改方法名称或删除第二个参数。 store()方法默认接受post请求而不是get request。将路由放在资源控制器之上或更改方法名称。
return results;
我希望这会有所帮助。
答案 1 :(得分:0)
正确的格式是:
public function store(JurnalRequest $request, $id) {
// your code
}
如果您收到评论中建议的Missing argument 2
等参数,则表示您没有正确生成路由,或者网址不包含ID段。