【发布时间】:2017-01-12 00:49:13
【问题描述】:
我正在尝试将路由参数传递给控制器,但出现此错误: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');
});
新的 storejunnal 方法:
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');
}
【问题讨论】:
-
将 $id 作为第二个参数,将 $request 作为第一个参数
-
试过了,但得到了这个错误:缺少 App\Http\Controllers\JurnalController::store() @Adamnick 的参数 2
-
你在使用资源控制器吗?
-
是的,我正在使用资源控制器