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\Pages\Dashboard; use Filament\Panel; use Filament\PanelProvider; use Susantokun\FilamentDynamicMenu\Filament\Pages\MenuSettings; use Susantokun\FilamentDynamicMenu\Filament\Resources\MenuItemResource; use Susantokun\FilamentDynamicMenu\Filament\Resources\MenuGroupResource; use Susantokun\FilamentDynamicMenu\Traits\HasDynamicMenu; class AdminPanelProvider extends PanelProvider { use HasDynamicMenu; public function panel(Panel $panel): Panel { $panel = $panel ->default() ->id('admin') ->pages([ Dashboard::class, MenuSettings::class, ]) ->resources([ MenuItemResource::class, MenuGroupResource::class, ]); $panel = $this->dynamicMenu($panel); $panel = $this->dynamicMenuSettings($panel); return $panel; } }
Penting:
MenuSettings::classharus didaftarkan di->pages()agar halaman pengaturan sidebar muncul di panel.
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
susantokun/filament-dynamic-menu 适用场景与选型建议
susantokun/filament-dynamic-menu 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 05 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「navigation」 「laravel」 「multi-tenant」 「dynamic-menu」 「filament」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 susantokun/filament-dynamic-menu 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 susantokun/filament-dynamic-menu 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 susantokun/filament-dynamic-menu 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A block to display a list of links to child pages, or pages in current level
Laravel Tenant Multi-Self-Hosted-DB connections with Migration tools package for Laravel 5.1+
Laravel Menu management
Alfabank REST API integration
Create simple top navigation for laravel
GUI for monitoring usage in real-time for appui
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 54
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-05-12