在 laravel-admin 中为菜单添加“备注”字段需四步:一、新增迁移为 admin_menu 表添加 nullable text 类型 remark 字段;二、扩展 menu 模型并重绑定,使 $fillable 包含 remark;三、继承 menucontroller,重写 form() 和 grid() 方法以支持表单编辑与列表显示;四、可选复制 sidebar.blade.php 并添加 title 属性实现悬停提示。

在 Laravel-admin 中为菜单添加“备注”字段并支持后台编辑,不是直接改源码,而是通过扩展菜单模型 + 自定义表单实现。核心思路是:让菜单数据可存备注、界面能填、列表能显示、权限逻辑不受影响。
一、给菜单数据表加备注字段
laravel-admin 默认的菜单表是 admin_menu(由迁移文件 2016_01_04_173148_create_admin_tables.php 创建),它不包含备注字段。你需要新增一个迁移:
- 运行命令:
php artisan make:migration add_remark_to_admin_menu_table - 编辑新生成的迁移文件,在
up()方法中添加:$table->text('remark')->nullable()->after('uri'); - 执行迁移:
php artisan migrate
这一步确保数据库层面支持存储备注内容,且不影响原有字段顺序和功能。
二、扩展菜单模型,支持读写 remark 字段
默认的菜单模型是 Encore\Admin\Auth\Database\Menu,它没有声明 remark 字段。你需要在自己的项目中创建一个继承类或使用模型事件,更推荐的方式是「重绑定模型」:
- 在
app/Admin/bootstrap.php或服务提供者中添加:use Encore\Admin\Auth\Database\Menu as BaseMenu;<br>class Menu extends BaseMenu { protected $fillable = ['parent_id', 'order', 'title', 'icon', 'uri', 'permission', 'remark']; } - 再用容器绑定覆盖原模型:
$this->app->bind(BaseMenu::class, Menu::class);
这样后续所有对菜单模型的操作(包括 Grid、Form)都会自动识别 remark 字段。
三、修改菜单管理控制器,加入备注字段表单与列表
菜单管理页面对应的控制器是 Encore\Admin\Controllers\MenuController。你不能直接改 vendor 文件,应通过扩展方式覆盖:
- 新建控制器
app/Admin/Controllers/ExtendedMenuController.php,继承原控制器:class ExtendedMenuController extends \Encore\Admin\Controllers\MenuController - 重写
form()方法,在表单中添加备注字段:$form->textarea('remark', '备注')->rules('max:200'); - 重写
grid()方法,在表格中显示备注列:$grid->column('remark', '备注')->limit(30); - 在
app/Admin/routes.php中替换路由:$router->resource('auth/menu', ExtendedMenuController::class)->except(['show']);
刷新菜单管理页(/admin/auth/menu),就能看到输入框和列表列了,保存后数据会写入数据库。
四、可选:在侧边栏菜单项旁显示小提示(前端增强)
如果希望用户在点击菜单时能看到备注作为提示,可小范围定制前端:
- 复制
vendor/encore/laravel-admin/resources/views/partials/sidebar.blade.php到resources/views/admin/partials/sidebar.blade.php - 找到菜单项渲染位置(类似
@#@#@#@#@#@#@#@#@#@0),改为:@#@#@#@#@#@#@#@#@#@1 - 在
config/admin.php中配置视图路径:'views' => ['path' => resource_path('views/admin')],
这样鼠标悬停菜单项时,会显示备注内容,提升操作友好性,且完全不侵入核心包。











