Laravel Tips #1: Tips Routing Agar Kode Lebih Efisien

Hai Sobat BWA!🙌

Framework Laravel memiliki banyak fitur yang mudah digunakan disertai dengan dokumentasi yang lengkap. Hal ini membuat Laravel menjadi pilihan yang sangat baik bagi para developer yang ingin membangun aplikasi web secara efisien dan efektif. Selain itu, Laravel juga memiliki komunitas yang aktif, sehingga jika menghadapi kendala atau membutuhkan saran, terdapat banyak resource yang bisa dimanfaatkan. Fitur-fitur seperti Eloquent ORM, Blade Templating Engine, dan Artisan CLI membuat proses pengembangan menjadi lebih cepat dan menyenangkan. Dengan semua kelebihan ini, tidak mengherankan jika Laravel menjadi salah satu framework PHP paling populer di dunia.

1. Route Group

Dalam mengelola routing, kita dapat membuat route grup di dalam grup agar struktur route menjadi lebih terorganisir dan memudahkan manajemen route yang kompleks serta mempermudah pengelolaan akses dan autentikasi pada bagian-bagian tertentu dari aplikasi. Selain itu, penggunaan route grup di dalam grup juga digunakan untuk menugaskan middleware tertentu hanya ke beberapa URL pada grup “induk”. Contoh penggunaan route grup di dalam grup adalah sebagai berikut:

Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function () {

    // Middleware 'log' hanya diterapkan ke beberapa URL di dalam grup 'induk'
    Route::group(['middleware' => 'log'], function () {
        Route::get('/dashboard', 'AdminController@dashboard');
        Route::get('/reports', 'AdminController@reports');
    });

    // Rute lain tanpa middleware 'log'
    Route::get('/profile', 'AdminController@profile');
    Route::get('/settings', 'AdminController@settings');
});

2. Controller Groups

Daripada menggunakan controller pada setiap baris route, kita dapat menggunakan route controller group untuk mengelompokkan route yang memiliki controller yang sama, sehingga kode menjadi lebih rapi dan mudah dikelola. Dalam framework Laravel, kita bisa mendefinisikan sekelompok route yang menggunakan controller yang sama dengan cara berikut:

Route::controller(UserController::class)->group(function () {
    Route::get('/users', 'index');
    Route::get('/users/{id}', 'show');
    Route::post('/users', 'store');
    Route::put('/users/{id}', 'update');
    Route::delete('/users/{id}', 'destroy');
});

3. Route View

Kita bisa menggunakan Route::view($uri , $bladePage) untuk mengembalikan view secara langsung tanpa harus menggunakan function controller. Penggunaan route ini sangat berguna untuk menghemat waktu dan menyederhanakan kode ketika kita hanya perlu menampilkan halaman statis atau halaman dengan data sederhana yang tidak memerlukan logika bisnis yang kompleks.

Route::view('/about', 'about');
Route::view('/contact', 'contact');

Dalam contoh di atas, ketika pengguna mengunjungi URL /about, Laravel akan mengembalikan view about.blade.php. Demikian pula, URL /contact akan mengembalikan view contact.blade.php.

4. Menambahkan Middleware Global

Ketika kita ingin mendefinisikan Middleware Global untuk semua route API, ada tiga cara di mana kita dapat mengaturnya:

  • Opsi 1: Pada file Route.php
// routes/api.php
Route::middleware(YourMiddleware::class)->group(function() {
   // .., all API routes
})
  • Opsi 2: Pada file RouteServiceProvider.php
// app/Providers/RouteServiceProvider.php
public function boot()
{
    $this->configureRateLimiting();
 
    $this->routes(function () {
        Route::middleware(['api', YourMiddleware::class])
            // ...
  • Opsi 3: Dalam file Kernel.php
// app/Http/Kernel.php: add to the 'api' group
protected $middlewareGroups = [
    'api' => [
        // \\Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful::class,
        'throttle:api',
        \\Illuminate\\Routing\\Middleware\\SubstituteBindings::class,
        YourMiddleware::class,
    ],
];

5. Kustom Nama Route Resource

Ketika menggunakan Resource Controller, dalam file routes/web.php kita dapat menentukan parameter ->names() , sehingga awalan URL pada browser akan sesuai dengan nama yang kita tentukan. Dengan menggunakan ->names(), kita dapat memberikan nama khusus pada setiap route yang dihasilkan oleh Resource Controller. Contohnya adalah sebagai berikut:

Route::resource('photos', PhotoController::class)->names([
    'index' => 'photos.index',
    'create' => 'photos.create',
    'store' => 'photos.store',
    'show' => 'photos.show',
    'edit' => 'photos.edit',
    'update' => 'photos.update',
    'destroy' => 'photos.destroy',
]);

Dengan menggunakan parameter ->names(), kita dapat merujuk pada route ini dalam kode kita seperti berikut:

// Menghasilkan URL untuk route 'photos.index'
$url = route('photos.index');

// Redirect ke route 'photos.store'
return redirect()->route('photos.store');

Kesimpulan

Itulah beberapa tips routing pada Laravel yang dapat kalian coba! Dengan menerapkan tips-tips tersebut, kalian dapat membuat aplikasi web yang lebih terstruktur, efisien, dan mudah dikelola. Jangan lupa untuk selalu mengikuti dokumentasi resmi Laravel dan terus eksplorasi fitur-fitur baru yang ditawarkan framework ini untuk meningkatkan kemampuan dan performa aplikasi kalian. Selamat mencoba dan semoga berhasil!

Semoga artikel ini dapat bermanfaat ya! Dan bagi kalian yang tertarik untuk mempelajari lebih lanjut tentang Laravel, kalian bisa mempelajarinya secara gratis melalui BuildWithAngga loh! Jangan lupa kepoin kelas-kelasnya ya! Sampai jumpa di artikel selanjutnya🙌