Laravel8でルーティングはどうやって書けばいいの?書いてみたけど、何だかコードがぐちゃぐちゃしていて見にくいからすっきりとまとめたいな….
こんな疑問を解決します。
この記事ではLaravel8でルーティングをすっきりとまとめる方法を解説します。
きれいにコードをまとめられれば、チームのメンバーも見やすいコードになるし、修正も少なく済みます。
実際に実務でも役立っているので、ぜひ参考にしてくださいね!
- Laravel8でルーティングをすっきりとまとめる方法がわかる
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
Laravel8の基本的なルーティングの書き方
Laravel8でのルーティングの基本的な書き方は以下です。
Route::get('URL', [〇〇Controller::class, 'メソッド名']);
それぞれの処理にすると以下のように書けます。
// 一覧画面の表示
Route::get('/', [BookController::class, 'index'])->name('book.index');
// 本の登録画面の表示
Route::get('/create', [BookController::class, 'create'])->name('book.create');
// 本の登録処理
Route::post('/store', [BookController::class, 'store'])->name('book.store');
// 本の詳細
Route::get('/show/{id}', [BookController::class, 'show'])->name('book.show');
// 本の編集画面
Route::get('/edit/{id}', [BookController::class, 'edit'])->name('book.edit');
// 本の更新処理
Route::post('/update/{id}', [BookController::class, 'update'])->name('book.update');
// 本の削除
Route::post('/destroy{id}', [BookController::class, 'destroy'])->name('book.destroy');
->name(‘book.index’)のように書くと、ルート名に名前をつけられます。
例えば、ビューで以下のように呼び出すことができ、リンクをクリックするとURLの/に遷移します。
<a href="{{ route('book.index') }}>一覧画面へ</a>
Laravel8でルーティングをすっきりとまとめる方法
それでは、基本的なルーティングの書き方がわかったところでルーティングをすっきりとまとめる方法の解説です。
例えば以下のようなルーティングの場合、2つの箇所が冗長でまとめられます。
それは、
- /book/index,/book/createの/bookの部分
- ->name(‘book.index’)のbookの部分
// 一覧画面の表示
Route::get('/book/index', [BookController::class, 'index'])->name('book.index');
// 本の登録画面の表示
Route::get('/book/create', [BookController::class, 'create'])->name('book.create');
まずは第一段階として/book/index,/book/createの/bookをまとめます。
URLの部分をまとめるにはprefixを使います。
prefixとは日本語に訳すと前につくという意味になります。
// 一覧画面の表示
Route::prefix('/book')->group(function () {
Route::get('/index', [BookController::class, 'index'])->name('book.index');
// 本の登録画面の表示
Route::get('/create', [BookController::class, 'create'])->name('book.create');
});
prefix(‘まとめるもの’)とかき、groupで囲めばOKです。
第二段階でnameをまとめます。
Route::prefix('/book')
->name('book.')
->group(function () {
Route::get('/index', [BookController::class, 'index'])->name('index');
// 本の登録画面の表示
Route::get('/create', [BookController::class, 'create'])->name('create');
});
このようにgroupの前に->name(‘まとめたいもの’)を記述すればOKです。
->name(‘book.index’)を->name(‘index’)としたので、groupの前でまとめる際には->name(‘book.’)と.も忘れずに。
もしログイン認証とかを導入済みなら、以下のようにmiddlewareをはさむのもいいでしょう。
そうすることでログインしているならURLに遷移するようにできます。
Route::prefix('/book')
->middleware('auth')
->name('book.')
->group(function () {
Route::get('/index', [BookController::class, 'index'])->name('index');
// 本の登録画面の表示
Route::get('/create', [BookController::class, 'create'])->name('create');
});
【まとめ】Laravel8でルーティングをすっきりとまとめる方法
この記事では、Laravel8でルーティングの基本的な書き方とすっきりとまとめる方法を解説しました。
prefixを主に使えば、きれいに記述することができるんですね。
ここにあとは付け足せばいいだけなので、好きなようにカスタマイズしてください!
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
コメント