はじめに
今回は、Route::resource
を使ってCRUDのルーティングを一度に行う方法を見ていきましょう。
version:Laravel8
Route::resourceを使わない場合
以下のように、1機能につき最大8個のルーティングを記述する必要があります。
web.php
Route::get('/menus', [MenuController::class, 'index']);
Route::get('/menus/create', [MenuController::class, 'create']);
Route::post('/menus', [MenuController::class, 'store']);
Route::get('/menus/{theMenu}', [MenuController::class, 'show']);
Route::get('/menus/{theMenu}/edit', [MenuController::class, 'edit']);
Route::put('/menus/{theMenu}', [MenuController::class, 'update']);
Route::get('/menus/[theMenu]', [MenuController::class, 'destroy']);
Route::resourceを使うと
以下のように1行で記述することができます。
web.php
Route::resource('menus', MenuController::class);
一部のメソッドのみ使いたい場合
only
で使うメソッドを宣言
web.php
Route::resource('menus', MenuController::class)->only([
'index', 'show'
]);
except
で使わないメソッドを宣言
web.php
Route::resource('menus', MenuController::class)->except([
'create', 'store', 'update', 'destroy'
]);