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

如何在Laravel Backpack中访问MenuCRUD的子菜单项

问题根因

$item->children返回的是子菜单项的集合实例,不是单个子菜单模型对象,因此不能直接访问->name属性。你调试输出中看到的name字段是集合内部单个子项的属性,需要先遍历集合才能获取对应值。


基础两级菜单实现

直接遍历一级菜单下的子集合即可:

@foreach (\Backpack\MenuCRUD\app\Models\MenuItem::getTree() as $item)
  {{-- 一级菜单项 --}}
  <a class="text-gray-500 hover:text-gray-500" href="{{$item->url()}}">{{ $item->name }}</a>

  {{-- 存在子菜单时遍历输出 --}}
  @if ($item->children->isNotEmpty())
    <div class="pl-4">
      @foreach ($item->children as $childItem)
        <a class="text-gray-500 hover:text-gray-500" href="{{$childItem->url()}}">{{ $childItem->name }}</a>
      @endforeach
    </div>
  @endif
@endforeach

无限级嵌套菜单实现

如果需要支持多级子菜单,可使用Blade组件递归调用实现:

  1. 先创建Blade组件 resources/views/components/menu-item.blade.php
<a class="text-gray-500 hover:text-gray-500" href="{{ $item->url() }}">{{ $item->name }}</a>
@if ($item->children->isNotEmpty())
  <div class="pl-4">
    @foreach ($item->children as $child)
      <x-menu-item :item="$child" />
    @endforeach
  </div>
@endif
  1. 在业务模板中直接调用组件
@foreach (\Backpack\MenuCRUD\app\Models\MenuItem::getTree() as $item)
  <x-menu-item :item="$item" />
@endforeach

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:04