Langsung ke konten utama

Cara Membuat Dynamic Menu Navigation di Laravel dengan Blade Efisien

Pendahuluan

Bayangin lagi ngerjain fitur sederhana, tapi pas mau nambahin menu baru, malah harus bongkar-pasang file layout berkali-kali karena menunya masih hardcoded. Awalnya saya pikir nulis menu langsung di file Blade itu praktis, tapi lama-lama project jadi berantakan pas klien minta nambahin akses level menu. Akhirnya saya sadar kalau navigasi itu harusnya dinamis dan berbasis data, supaya nggak bikin pusing di kemudian hari.

Tips & Best Practices

Di banyak project, biasanya saya mulai dari membuat View Composer untuk memisahkan logika menu dari controller agar layout tetap bersih. Berikutnya, saya sering memanfaatkan cache untuk menyimpan struktur menu agar query ke database nggak berjalan setiap kali halaman di-load, apalagi kalau menunya jarang berubah. Terakhir, saya selalu membiasakan diri menggunakan form request atau middleware untuk memvalidasi akses menu berdasarkan role pengguna agar navigasi yang tampil benar-benar relevan.

Contoh Kode

Biasanya saya definisikan menu dalam bentuk array di ServiceProvider atau config, lalu saya lempar ke view. Contohnya begini:

// Dalam AppServiceProvider.php
View::composer('layouts.app', function ($view) {
    $menu = [
        ['label' => 'Dashboard', 'url' => '/dashboard', 'permission' => 'view_dashboard'],
        ['label' => 'Settings', 'url' => '/settings', 'permission' => 'manage_settings'],
    ];
    $view->with('menu', collect($menu)->filter(fn($m) => auth()->user()->can($m['permission'])));
});

Variasi Implementasi

Kita punya dua jalur utama: lewat config array yang statis tapi cepat, atau database untuk dashboard admin yang fleksibel. Kalau project-nya skala kecil, saya lebih suka pakai file config agar lebih ringan. Tapi untuk sistem CMS yang menunya bisa diatur user, menyimpan di database dengan relasi nested set jauh lebih masuk akal meskipun nambah beban query.

Kesalahan Umum

Sering saya temui developer yang lupa melakukan eager loading kalau menunya diambil dari database, ujung-ujungnya kena N+1 problem. Kedua, menaruh logika pengecekan role langsung di dalam file Blade yang bikin kodenya jadi 'spaghetti'. Ketiga, menggunakan hardcoded URL di setiap view padahal bisa pakai helper route(). Keempat, melupakan state 'active' pada menu, yang bikin user bingung mereka ada di halaman mana. Kelima, terlalu memaksakan menu yang kompleks di perangkat mobile tanpa memikirkan struktur hamburger menu yang responsif.

Ringkasan

Navigasi itu wajah dari aplikasi kita, jadi jangan dianggap remeh. Dengan membuat navigasi yang dinamis, kita bukan cuma ngerapihin kode, tapi juga investasi buat jangka panjang supaya pas revisi nanti kita nggak perlu keringat dingin. Intinya, keep it simple, gunakan power of ServiceProvider, dan selalu ingat kalau maintenance itu jauh lebih penting daripada sekadar 'fitur jalan'.

Komentar

Postingan populer dari blog ini

Cara Reset Password Database MySQL Menggunakan Laragon

Cara Reset Password Database MySQL Menggunakan Laragon Laragon adalah salah satu lingkungan pengembangan lokal (local development environment) yang populer di antara para pengembang web. Dalam beberapa kasus, mungkin kita perlu mereset password database MySQL pada Laragon jika lupa password atau untuk alasan keamanan tertentu. Berikut adalah langkah-langkah yang dapat kita ikuti untuk melakukan reset password database MySQL menggunakan Laragon:

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Apa Itu R dan L di Headset? Ini Dia Perbedaan dan Fungsinya yang Perlu Anda Ketahui

Arti R dan L di Headset: Apa Perbedaannya? Headset adalah alat yang digunakan untuk mendengarkan suara dari sumber audio seperti ponsel, komputer, atau pemutar musik. Headset biasanya terdiri dari dua bagian, yaitu earphone yang dimasukkan ke dalam telinga dan mikrofon yang digunakan untuk berbicara. Pada earphone, kita sering melihat ada tulisan R dan L. Apa arti dan perbedaan dari kedua huruf tersebut?