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

Laravel-Admin侧边栏添加新菜单链接报错:Call to a member function add() on array

问题解决:Laravel-Admin v1.8添加侧边栏菜单项报错「Call to a member function add() on array」

错误原因

你使用的Laravel-Admin v1.8.19中,\Encore\Admin\Facades\Admin::menu()方法返回的是菜单数组,并非可调用add()方法的对象,直接调用$menu->add()会触发该错误。

正确添加侧边栏菜单项的方法

方法一:在bootstrap.php中配置菜单

Laravel-Admin推荐的菜单配置位置是app/Admin/bootstrap.php,直接在该文件中添加以下代码:

use Encore\Admin\Facades\Admin;

Admin::menu(function ($menu) {
    // 保留原有首页菜单
    $menu->dashboard();
    
    // 添加Overalls菜单项
    $menu->add([
        'title' => '工作服管理', // 可自定义显示名称
        'url'   => admin_url('overalls'),
        'icon'  => 'fa-database',
    ]);
});

方法二:通过CRUD控制器自动关联菜单(更简便)

既然已定义Route::resource('overalls', OverallController::class),可直接在OverallController的setup()方法中设置页面标题,Laravel-Admin会自动生成对应侧边栏菜单项:

// 在OverallController的setup()方法中
public function setup()
{
    $this->title = '工作服管理'; // 设置页面标题,同时作为菜单名称
    $this->resource('/overalls');
    // 其他CRUD配置代码...
}

完成后删除路由文件中错误的菜单添加代码,执行php artisan route:clear清除路由缓存,刷新页面即可看到菜单。

方法三:使用Menu模型创建(适合动态菜单)

若需动态生成菜单,可直接操作Menu模型写入数据库:

use Encore\Admin\Auth\Database\Menu;

Menu::create([
    'parent_id' => 0, // 0表示顶级菜单
    'order'     => 1, // 排序优先级,数字越小越靠前
    'title'     => '工作服管理',
    'icon'      => 'fa-database',
    'uri'       => 'overalls', // 对应路由的URI
]);

这段代码可临时放在路由闭包中执行一次,执行后删除即可,菜单会自动在侧边栏显示(需确保角色有对应权限)。

注意事项

  1. 移除app/Admin/routes.php中那段错误的菜单添加代码,避免冲突。
  2. 执行php artisan route:clear清除路由缓存,确保新配置生效。
  3. 若开启了Laravel-Admin权限管理,需给对应角色分配该菜单的访问权限,否则无法看到菜单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:50:28