Laravel Nova:如何删除Label Resources并修改默认菜单为可展开分组菜单?
嘿,我刚好折腾过Laravel Nova的菜单自定义,给你整理了一套一步步实现的方案,完全匹配你的需求:
实现步骤
1. 打造可按需展开的分组菜单
Nova允许我们完全自定义主菜单,核心是在app/Providers/NovaServiceProvider.php的boot方法里重写mainMenu逻辑。我们可以用MenuSection来创建可折叠的分组,代码示例如下:
use Illuminate\Http\Request; use Laravel\Nova\Menu\Menu; use Laravel\Nova\Menu\MenuSection; public function boot() { parent::boot(); // 重写Nova主菜单 Nova::mainMenu(function (Request $request) { return Menu::make() // 创建第一个可折叠分组:用户管理 ->append(MenuSection::make('用户管理', [ \App\Nova\User::class, \App\Nova\Role::class, // 把你需要的资源放到这个分组里 ])->collapsable()->collapsed()) // collapsed()设置默认折叠,去掉则默认展开 // 创建第二个可折叠分组:内容运营 ->append(MenuSection::make('内容运营', [ \App\Nova\Article::class, \App\Nova\Category::class, ])->collapsable()) // 单独的菜单项(如果不需要分组可以直接加) ->append(\App\Nova\SystemSetting::class); }); }
这样配置后,菜单就会变成你想要的可展开/折叠的分组样式,完全替代默认的菜单结构。
2. 移除菜单中的“Resources”字样
默认Nova会把所有资源放到名为“Resources”的默认分组里,而我们上面自定义菜单后,已经完全替换了默认的菜单结构,所以“Resources”这个分组会自动消失。如果你的场景里还有残留,执行php artisan nova:clear-cache清除Nova缓存即可。
3. 删除Label Resources
这里分两种情况处理:
- 如果是要隐藏某个名为“Label”的资源菜单:直接在自定义菜单里不要加入该资源,或者在对应的Nova资源类(比如
App\Nova\Label.php)里添加一行:public static $displayInNavigation = false; - 如果是要移除资源标签里的“Resources”后缀:比如默认某个资源的复数标签是“Xxx Resources”,可以在资源类里重写
pluralLabel方法:public static function pluralLabel() { return '你的自定义复数标签'; // 比如把“Label Resources”改成“标签” }
最后注意事项
修改完配置后,记得执行以下命令清除Nova缓存,确保菜单生效:
php artisan nova:clear-cache
内容的提问来源于stack exchange,提问作者Moum
相关产品推荐
相关产品推荐

