我试图将路由参数传递给 Controller ,但出现此错误: 传递给 App\Http\Controllers\JurnalController::store() 的参数 2 必须是 App\Http\Requests 的实例\JurnalRequest,没有给出
下面是代码..
路线:
Route::get('/edisi/{id}', 'JurnalController@store');
Controller :
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');
});
新的 storejurnal 方法:
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');
}
最佳答案
当您使用资源 Controller 时,store 方法不接受除 Request 实例之外的任何其他参数。尝试更改方法名称或删除第二个参数。 store() 方法默认接受 post 请求而不是 get 请求。将您的路由放在资源 Controller 顶部或更改方法名称。
Route::get('/edisi/{id}', 'JurnalController@store');
Route::resource('jurnals', 'JurnalController');
我希望这会有所帮助。
关于laravel - 将路由参数传递给 Controller Laravel 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317205/