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中的菜单多个级别?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据用户在 Laravel 5 中的角色选择用户?

Laravel 测试:如果需要检查多个级别,assertJsonFragment 会失败

laravel 5.7 中的多个文件上传问题

Laravel 5 种用于开发和生产的不同日志级别

下拉菜单未打开 - laravel 5

laravel 5中多个异步ajax请求中的CSRF令牌不匹配错误?