You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Filament PHP:如何为后台面板左侧导航栏添加下拉菜单

实现Filament PHP侧边栏下拉菜单的思路

1. 官方内置子菜单方案(推荐)

Filament v3及以上版本原生支持侧边栏子菜单,可在PanelProvider的navigation()配置中直接定义:

use Filament\Panel;
use Filament\Navigation\NavigationItem;

public function panel(Panel $panel): Panel
{
    return $panel
        // 保留你的其他面板配置
        ->navigation([
            // 定义带下拉子项的主菜单
            NavigationItem::make('内容管理')
                ->icon('heroicon-o-folder-open')
                ->subItems([
                    // 直接添加URL型子项
                    NavigationItem::make('文章列表')
                        ->url('/admin/posts')
                        ->icon('heroicon-o-document-text'),
                    // 关联Filament资源作为子项
                    \App\Filament\Resources\CategoryResource::getNavigationItem(),
                ]),
            // 其他独立导航项
            NavigationItem::make('系统设置')
                ->url('/admin/settings')
                ->icon('heroicon-o-cog'),
        ]);
}

还可以给子菜单添加权限控制:

NavigationItem::make('敏感数据')
    ->visible(auth()->user()->hasPermissionTo('view_sensitive_data'))
    ->subItems([/* ... */])

2. 自定义导航视图(复杂需求适配)

如果需要高度定制的下拉菜单(比如多级嵌套、自定义样式),可以通过修改Filament核心视图实现:

  1. 发布Filament视图资源:
php artisan vendor:publish --tag=filament-views
  1. 找到resources/views/vendor/filament/layouts/app.blade.php,定位侧边栏导航渲染区域,替换或补充自定义的下拉菜单HTML结构
  2. 结合Filament的Filament\Facades\Filament::getNavigationItems()方法获取现有导航数据,整合到自定义结构中

3. 版本兼容提示

如果使用Filament v2,官方没有原生子菜单支持,可通过以下方式实现:

  • 创建自定义的Navigation类,重写导航项的生成逻辑,加入下拉结构
  • 直接修改发布后的侧边栏视图,手动添加HTML下拉菜单代码

内容的提问来源于stack exchange,提问作者user2224150

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:55:20