将路径参数传递给控制器​​Laravel 5

时间:2016-09-04 13:04:52

标签: laravel laravel-5

我尝试将路由参数传递给控制器​​,但是我收到此错误: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');
    }

2 个答案:

答案 0 :(得分:3)

使用资源控制器时,store方法不接受除Request实例之外的任何其他参数。尝试更改方法名称或删除第二个参数。 store()方法默认接受post请求而不是get request。将路由放在资源控制器之上或更改方法名称。

return results;

我希望这会有所帮助。

答案 1 :(得分:0)

正确的格式是:

    public function store(JurnalRequest $request, $id) {
        // your code
    }

如果您收到评论中建议的Missing argument 2等参数,则表示您没有正确生成路由,或者网址不包含ID段。