laravel - 将路由参数传递给 Controller ​​ Laravel 5

标签 laravel laravel-5

我试图将路由参数传递给 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/

相关文章:

php - Laravel 5 批量插入关系

php - Laravel 迁移无法在新数据库上运行

mysql - 想要找到两个请求值

php - 我如何在 Laravel 5 中使用部分?

javascript - laravel5.0中HTML select标签的动态选择

php - 在 Laravel 查询生成器或 SQL 中将两个查询合并为一个

php - Laravel:是否可以将 Session 作为依赖项注入(inject)?

laravel - 其他字段的字段验证不为空

php - Laravel 查询生成器,其中 NULL 没有结果

php - Eloquent "select"方法不适用于使用 "with"方法