Laravel : Route Group — basic

Route Group memungkinkan Anda mengelompokkan semua route ke dalam satu blok, membuatnya lebih mudah dibaca, dipelihara, dan dipahami.

Fadli Rivansyah
4 min readJun 22, 2024
Route Group Laravel Laravel Route Grouping Laravel Route::group Example Laravel Group Middleware Laravel Route Prefix, “Using Middleware in Laravel Route Groups”, “How to Add a Prefix to Route Groups in Laravel”
Photo by Mauricio Fanfa on Unsplash

Laravel memberikan kemudahan dalam membangun aplikasi. pada artikel ini, aku membahas mengenai route group. laravel yang aku gunakan pada saat ini adalah laravel versi 11. semakin tinggi versi laravel, semakin banyak pula fitur-fitur yang mereka tawarkan.

Jangan ragu dalam mempelajarinya, untuk langkah awal pelajari dulu fundamentalnya

pembahasan ini merupakan versi aku tentang bagaimana pengguna route group. mungkin seseorang yang baru mengenal laravel akan bingung bagaimana cara menggunakannya.

aku menyarankan kamu pergunakan AI, sebagai alat bantu dalam pembelajaran, sehingga kamu mudah dalam memahami pembelajaran. usahakan kita jangan malas membaca, karena membaca merupakan salah satu pintu dari sumber pengetahuan.

sekarang kita punya masalah. anggap saja kita mempunyai middleware yang dapat membatasi user. middleware tersebut aku beri nama ‘auth’. dengan itu user tidak dapat mengakses halaman dashboard. kecuali user tersebut harus melakukan dan melewati proses authentication.

route lainnya yang menerapkan middlware ‘auth’ memiliki jumlah yang sangat banyak, tentu akan repot dalam melakukannya dengan sata-persatu setiap routenya. dengan route group laravel dapat mengatasi masalah tersebut.

route group akan menegelompokan route-route yang telah menerapkan middleware ‘auth’. dengan fitur itu, pengembang hanya menulis sistaks dengan beberapa baris saja yang dapat mencakup route-route tersebut.

wahh keren bukan!! route group tidak hanya digunakan pada middleware saja, tetapi banyak hal lain seperti dapat melakukan secara bersarang terhadap route group.

Jadi route group itu dilakukan karena adanya hal yang sama, sehingga pengembang tidak melakukan penulisan yang berulang.

pada artikel ini aku membahas penggunaan route group pada controller, middleware, dan prefix.

Route group dengan middleware

untuk membuat middleware, pada artikel ini tidak aku bahas. kamu bisa menemukan di artikel lain.

dalam membuat route group pada middleware cukup mudah untuk dilakukan. lihatlah kode dibawah ini!

Route::middleware(['nama.middleware'])->group(function () {
//route yang menerapkan middlware tersebut.
});

kamu harus memberikan nama middleware yang sebelumnya kamu buat dan didaftarkan di file kernel.php

jika itu sudah kamu lakukan, kamu bisa menggunakan middleware. baik itu secara satu persatu maupun dengan pengelompokan atau group.

Berikut contoh penggunaan route group pada middleware :

//nama middleware => guest
Route::middleware(['guest'])->group(function () {
Route::get('/login', [LoginController::class, 'index'])->name('login');
Route::post('/login', [LoginController::class, 'enterDashboard']);
});

Pada kode diatas merupakan middleware dengan nama ‘guest’ yang berarti user hanya mengakses route terkhusus untuk user guest. misalnya user tersebut ingin mengakes route dashboard, user harus login terlebih dahulu.

kita bisa melihat bahwa, route group seperti pembungkus yang didalamnya memiliki berbagai macam route. dengan itu pengembang tidak perlu melakukan satu-persatu terhadap route yang diterapkannya.

sekarang bagaimana menerapkan 2 sakaligus middleware pada route group?

kebetulan pada dokumentasi resmi laravel sudah mencontohkan penggunaan 2 middleware sekaligus. kamu bisa mengunjungi disini.

Route group dengan controller

Kita tentu membutuhkan controller jika menerapkan aplikasi dengan konsep MVC. laravel merupakan framework yang menggunakan konsep MVC. untuk pembahasan tentang controller kamu bisa mengunjungi artikel aku :

atau kamu bisa mengunjunginya disitus resmi laravel disini.

jika kamu sudah memahami controller secara basic atau lebih dari itu terutama pada laravel ini. insya allah kamu mudah dalam menggunakan route group pada controller ini.

sekarang anggap saja kita punya masalah. kita punya controller yang dapat mengolah keuangan dengan nama AdminController. kita menuliskan controller tersebut setiap route yang kita perlukan. tentu hal ini membuat code kurang efektif karena salah satunya menuliskannya secara berulang.

kamu bisa melihat kode berikut :

Route::get('/admin/keuangan', [AdminController::class, 'index'])->name('dashboard_keuangan');
Route::get('/admin/keuangan/create', [AdminController::class, 'createKeuangan'])->name('create_dataKeuangan');
Route::post('/admin/keuangan', [AdminController::class, 'storeKeuangan']);

Route group pada controller hadir salah satunya mengatasi permasalahan tersebut, sekarang mari kita lakukan perbaikan dengan menggunakan route group :

// menggunakan route group controller  
Route::controller(AdminController::class)->group(function () {
Route::get('/admin/keuangan', 'index')->name('dashboard_keuangan');
Route::get('/admin/keuangan/create', 'createKeuangan')->name('create_dataKeuangan');
Route::post('/admin/keuangan', 'storeKeuangan');
});

Pada kode diatas, kita hanya mendeklarasikan route group controller diawal sebagai pembungkus yang didalalam terdapat route-route yang memiliki controller yang sama. dengan itu kode akan lebih mudah dibaca.

Route group dengan prefix

prefix dalam bahasa indonesia merupakan awalan. lantas apa kaitannya dengan route group?

yukk.. sekarang kita eksekusi hehehee…

sekarang anggap saja aku mempunyai route dengan awalan yang sama yaitu ‘admin’. lihat kode dibawah ini:

Route::get('/admin/keuangan', [AdminController, 'index'])->name('dashboard_keuangan');
Route::get('/admin/keuangan/create', [AdminController,'createKeuangan'])->name('create_dataKeuangan');
Route::post('/admin/keuangan', [AdminController,'storeKeuangan']);

bagaimana ketika ingin menambahkan route lagi dengan awalan admin. kita akan menulisnya lagi seperti itu, sangat repot bukan!!

Route group prefix dapat menyederhanakan itu dengan hanya penulis nama prefix diawal. lihatlah code berikut:

Route::prefix('admin')->group(function () {
Route::get('/keuangan', [AdminController, 'index'])->name('dashboard_keuangan');
Route::get('/keuangan/create', [AdminController,'createKeuangan'])->name('create_dataKeuangan');
Route::post('/keuangan', [AdminController,'storeKeuangan']);
});

Kamu cukup menambahkan prefix beserta nama awal route kamu. dengan itu kamu tidak perlu menuliskan awal route yang sama pada route lainnya, dengan syarat kamu menggunakan nama prefix yang sama.

Penggunaan route group bersarang

Ternyata route group bisa dilakukan secara bersarang lohh!! iya beneran..

kita bisa melakukan sekaligus menerapkan prefix, middleware, dan controller. lihatlah kode berikut :

Route::prefix('admin')->middleware('admin')->group( function() {
Route::controller(AdminController::class)->group(function () {
Route::get('/keuangan', 'index')->name('dashboard_admin');
Route::get('/keuangan/create', 'createKeuangan')->name('create_dataKeuangan');
Route::post('/keuangan', 'storeKeuangan');
});
});

Pada kode diatas merupakan contoh penggunaan route secara bersarang. kode tersebut terlihat mudah dibaca dan dipelihara. fitur laravel memberikan kemudahan terhadap pengembang dan memberikan kode yang lebih baik.

Dapat disimpulkan bahwa route group ini dapat membantu pengembang. salah satunya dalam penulis yang berulang. kita bisa menggunakan fitur-fitur dari laravel seperti yang aku bahas diatas.

Terimah kasih sudah membaca artikel aku tentang topik ini atau topik lainnya, semoga membantu kamu dalam memahami route group pada pembahasan tersebut.

--

--