laravel 5中的菜单多个级别?
Posted
技术标签:
【中文标题】laravel 5中的菜单多个级别?【英文标题】:Menu in laravel 5 Multiple levels? 【发布时间】:2017-03-12 06:56:44 【问题描述】:型号:
类菜单扩展模型 受保护的 $table = '菜单'; 公共功能子菜单() return $this->hasMany('App\Menu', 'parent_id');控制器:
类 MenuController 扩展控制器 公共函数索引() $menus = Menu::where('parent_id', 0)->get(); 返回视图('admin.menus.index',compact('menus'));查看:
<ul>
@foreach($menus as $menu)
<li> $menu->title
@if($menu->sub_menu->count() > 0)
<ul>
@foreach($menu->sub_menu as $sub)
<li $sub->title </li>
@endforeach
</ul>
@endif
</li>
@endforeach
</ul>
表结构:
-------------------------------------------------- -------------------- 编号 |标题 | parent_id -------------------------------------------------- -------------------- 1 |主页 | 0 -------------------------------------------------- -------------------- 2 |产品1 | 0 -------------------------------------------------- -------------------- 3 |产品1.1 | 2 -------------------------------------------------- -------------------- 4 |产品1.1.1 | 3 -------------------------------------------------- -------------------- 5 |产品1.1.2 | 3 -------------------------------------------------- --------------------它只显示了 2 个关卡,但我需要多个关卡,请帮忙!
【问题讨论】:
这里有什么问题? @AmitGupta.op 正在考虑如果菜单是多级的,那么他需要在循环中显示菜单,但他正在使用 foreach 循环,最终会得到两步菜单。我希望他需要使用 while循环 @AmitGupta,它只显示 2 个级别,但我需要多个级别。请帮忙! 没找到你。你能在你的问题中说明你有什么和你需要什么吗? @AmitGupta 好的,我刚刚编辑了我的问题。感谢您的 cmets。 【参考方案1】:你可以用递归来试试:
<ul>
@foreach($menus as $menu)
<li>
$menu->title
@if($menu->sub_menu->count())
!! view('admin.menus.index', ['menus' => $menu->sub_menu]) !!
@endif
</li>
@endforeach
</ul>
当您的视图只有上述内容时它会起作用,否则,您已经创建了新的部分并递归调用它。
请注意,使用递归可能会导致无限循环。
【讨论】:
不,它不适用于多个级别,但对于 1 级工作正常。非常感谢,但现在我已经通过在模型中创建函数递归解决了它。谢谢! 您也可以查看repo。看起来对你有帮助。以上是关于laravel 5中的菜单多个级别?的主要内容,如果未能解决你的问题,请参考以下文章