susantokun/filament-dynamic-menu
最新稳定版本:v1.0.0
Composer 安装命令:
composer require susantokun/filament-dynamic-menu
包简介
Database-driven dynamic navigation menus for Filament panels with multi-tenancy support.
README 文档
README
Database-driven dynamic navigation menus for Filament panels with multi-tenancy support.
Alih-alih mendefinisikan navigasi secara statis di PanelProvider, package ini memungkinkan kamu mengelola sidebar menu langsung dari Filament admin panel — termasuk grup, item, visibility berbasis role/permission, badge, dan pengaturan sidebar.
Persyaratan
- PHP
^8.2 - Laravel
^11.0 - Filament
^5.0
Langkah Instalasi
1. Install via Composer
composer require susantokun/filament-dynamic-menu
2. Jalankan Perintah Install
php artisan filament-dynamic-menu:install
Perintah ini akan:
- Mempublish file konfigurasi (
config/filament-dynamic-menu.php) - Mempublish file migrasi ke
database/migrations/ - Mempublish file terjemahan (EN & ID)
- Mempublish file views
- Menanyakan apakah ingin langsung menjalankan migrasi
Gunakan opsi
--forcejika kamu ingin menimpa file yang sudah ada:php artisan filament-dynamic-menu:install --force
3. Aktifkan Dynamic Menu
Buka .env dan tambahkan:
FILAMENT_DYNAMIC_MENU_ENABLED=true
Atau ubah langsung di config/filament-dynamic-menu.php:
'enabled' => true,
4. Pasang Trait di PanelProvider
Buka app/Providers/Filament/AdminPanelProvider.php (atau PanelProvider yang kamu gunakan), lalu tambahkan trait HasDynamicMenu:
<?php namespace App\Providers\Filament; use Filament\Panel; use Filament\PanelProvider; use Susantokun\FilamentDynamicMenu\Traits\HasDynamicMenu; class AdminPanelProvider extends PanelProvider { use HasDynamicMenu; public function panel(Panel $panel): Panel { return $panel ->default() ->id('admin') ->dynamicMenu() // aktifkan dynamic menu dari database ->dynamicMenuSettings() // aktifkan pengaturan sidebar dari database ->resources([ // resource kamu... ]); } }
5. Registrasi Resource Menu Management
Agar halaman manajemen menu muncul di sidebar, daftarkan resource berikut di PanelProvider:
use Susantokun\FilamentDynamicMenu\Filament\Resources\MenuItemResource; use Susantokun\FilamentDynamicMenu\Filament\Resources\MenuGroupResource; public function panel(Panel $panel): Panel { return $panel // ... ->resources([ MenuItemResource::class, MenuGroupResource::class, ]); }
6. (Opsional) Konfigurasi Role & Permission
Jika kamu menggunakan spatie/laravel-permission, tentukan model Role dan Permission di config/filament-dynamic-menu.php:
'role_model' => \Spatie\Permission\Models\Role::class, 'permission_model' => \Spatie\Permission\Models\Permission::class,
Jika kamu menggunakan bezhansalleh/filament-shield, package ini akan otomatis me-resolve nama permission dari Resource/Page/Cluster target.
Hasil Akhir
Setelah semua langkah selesai, buka Filament admin panel kamu. Di sidebar akan muncul Settings > Menu Settings yang berisi:
| Menu | Fungsi |
|---|---|
| Groups | Kelola grup navigasi (nama, icon, urutan, visibility, role) |
| Items | Kelola item navigasi (Resource, Page, Cluster, URL, Separator) |
| Settings | Pengaturan sidebar (collapsible groups, dll) |
Saat pertama kali, jika belum ada data menu, package akan otomatis menjalankan DefaultMenuSeeder yang membuat "Main Menu" group dengan item "Dashboard".
Konfigurasi Penting
| Key | Default | Keterangan |
|---|---|---|
enabled |
false |
Master switch dynamic menu |
tenant_mode |
single |
single, stancl, atau custom |
tenant_model |
null |
FQCN model tenant (untuk mode custom) |
cache.ttl |
86400 |
Cache TTL dalam detik (24 jam) |
shield_integration |
true |
Auto-resolve permission Shield |
auto_seed_on_empty |
true |
Auto-seed saat data menu kosong |
panel_id |
admin |
ID panel tempat menu management muncul |
navigation.group |
Settings |
Sidebar group untuk Menu Settings |
Facade
Package ini menyediakan facade DynamicMenu:
use Susantokun\FilamentDynamicMenu\Facades\DynamicMenu; DynamicMenu::isEnabled(); // cek apakah dynamic menu aktif DynamicMenu::tenantMode(); // mode tenant yang digunakan DynamicMenu::clearCache(); // hapus cache menu
Multi-Tenancy
Package mendukung 3 mode tenant:
single— Tidak ada tenant, menu berlaku global.stancl— Menggunakan packagestancl/tenancy.custom— Menggunakan model tenant kustom kamu sendiri. Settenant_modeldi config.
Saat mode selain single, semua tabel akan memiliki kolom tenant_id dan data menu akan di-scope per tenant.
Lisensi
MIT
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-05-12