Filament Menu Builder 使用教程
2025-04-18 23:38:44作者:贡沫苏Truman
1. 项目介绍
Filament Menu Builder 是一个开源的 Filament 扩展包,它允许开发者在 Filament 应用中创建和管理菜单。这个扩展包提供了多种菜单面板类型,包括自定义链接、自定义文本、静态菜单和模型菜单等,以方便地在应用的各个位置(如头部、尾部)展示菜单。
2. 项目快速启动
安装
首先,确保你已经安装了 Filament。然后,你可以通过 Composer 安装 Filament Menu Builder:
composer require datlechin/filament-menu-builder
发布迁移和配置文件
接下来,发布迁移文件和配置文件:
php artisan vendor:publish --tag=filament-menu-builder-migrations
php artisan migrate
如果需要自定义配置,可以发布配置文件:
php artisan vendor:publish --tag=filament-menu-builder-config
发布视图(可选)
如果你想要自定义视图,可以发布它们:
php artisan vendor:publish --tag=filament-menu-builder-views
添加插件到 Filament 面板
在 AdminPanelProvider 中添加 Filament Menu Builder 插件:
use Datlechin\FilamentMenuBuilder\FilamentMenuBuilderPlugin;
// ...
$panel->plugin(FilamentMenuBuilderPlugin::make());
添加菜单位置
在 AdminPanelProvider 中定义菜单位置:
$panel->plugin(
FilamentMenuBuilderPlugin::make()
->addLocation('header', 'Header')
->addLocation('footer', 'Footer')
);
设置菜单面板
你可以添加各种类型的菜单面板:
use Datlechin\FilamentMenuBuilder\MenuPanel\StaticMenuPanel;
// ...
$panel->plugin(
FilamentMenuBuilderPlugin::make()
->addMenuPanels([
StaticMenuPanel::make()
->add('Home', url('/'))
->add('Blog', url('/blog')),
])
);
3. 应用案例和最佳实践
自定义链接菜单面板
默认情况下,Filament Menu Builder 提供了一个自定义链接菜单面板,允许添加自定义链接到菜单中。你可以通过以下方式禁用此面板:
$panel->plugin(
FilamentMenuBuilderPlugin::make()
->showCustomLinkPanel(false)
);
自定义文本菜单面板
此面板允许添加不包含 URL 或目标的文本项到菜单中,这对于添加菜单标题很有用。要启用此面板,可以使用:
$panel->plugin(
FilamentMenuBuilderPlugin::make()
->showCustomTextPanel()
);
模型菜单面板
模型菜单面板允许从模型中添加菜单项。首先,你的模型需要实现 MenuPanelable 接口和 HasMenuPanel 特性。然后,实现相关方法:
class Category extends Model implements MenuPanelable
{
use HasMenuPanel;
public function getMenuPanelTitleColumn(): string
{
return 'name';
}
public function getMenuPanelUrlUsing(): callable
{
return fn ($model) => route('categories.show', $model->slug);
}
}
接着,将模型菜单面板添加到插件:
$panel->plugin(
FilamentMenuBuilderPlugin::make()
->addMenuPanels([
ModelMenuPanel::make()
->model(App\Models\Category::class),
])
);
4. 典型生态项目
Filament Menu Builder 可以与其他 Filament 扩展包配合使用,构建功能丰富的后台管理系统。例如,与 Filament Table Builder 结合,可以创建具有菜单功能的表格,或与 Filament Forms 配合,为菜单项添加自定义表单字段。通过这些扩展包的组合使用,可以打造出强大且灵活的后台管理系统。
登录后查看全文
热门项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0216
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0138
uni-appA cross-platform framework using Vue.jsJavaScript08
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
SwanLab⚡️SwanLab - an open-source, modern-design AI training tracking and visualization tool. Supports Cloud / Self-hosted use. Integrated with PyTorch / Transformers / LLaMA Factory / veRL/ Swift / Ultralytics / MMEngine / Keras etc.Python00
tiny-universe《大模型白盒子构建指南》:一个全手搓的Tiny-UniverseJupyter Notebook03
项目优选
收起
deepin linux kernel
C
32
16
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
471
465
Ascend Extension for PyTorch
Python
758
968
昇腾LLM分布式训练框架
Python
185
231
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
698
1.4 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
878
2.03 K
暂无描述
Dockerfile
780
5.08 K
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
70
22
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.04 K
271
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
2.08 K
216