【问题标题】:Laravel multilevel menus with sorting带有排序的 Laravel 多级菜单
【发布时间】:2018-07-08 17:43:54
【问题描述】:

我需要您对在 laravel 中创建的多级菜单的帮助,以及要排序的意见。 我有这样的数据库结构:

structure_id 是主键。 structure_name 是一个名字,会在前端显示。 structure_url 是锚点指向的 url。 module_id 在这里无关紧要(需要我在应用程序内使用)。 sort_position 很重要。它是从 1 到 x 的整数。我将按此编号按顺序排列菜单项。我还需要对更改订单有意见(我想我可以自己编写代码……我希望如此)。我真的不知道,在子菜单中如何处理 sort_position ...... parent_id 是一个属性,表示菜单项在另一个菜单项中有父项。因此,如果此值为 0(如默认值),则该项目已启动。如果 item 的 parent_id 为 f.e.: 2,则表示该 item 属于 structure_id = 2

我尝试了一些徒劳的实验,但我自己没有机会去做。我真的是laravel的初学者,所以我希望任何人都可以帮助我

【问题讨论】:

  • 有什么问题?添加/编辑菜单项时,您可以手动指定顺序 (sort_position)。

标签: laravel menu laravel-5.5


【解决方案1】:

这是我用来获取多级菜单的分步操作:

表格“菜单”

id、title、order、parent_id

型号

class Menu extends Model
{
    public function children()
    {
        return $this->hasMany(self::class , 'parent_id', 'id')->orderBy('order');
    }
}

控制器

class MenuController extends Controller
{
    public function index()
    {
        $menus = Menu::where('parent_id', 0)->orderBy('order', 'ASC')->get();
        return view('menu', compact('menus'));
    }
}

查看

@foreach($menus as $menu)
    @foreach($menu->children => $child)
        <h4>{{ $child->title }}</h4>
    @endforeach
@endforeach

【讨论】:

  • 不起作用,兄弟。您能否添加完整的分步教程,如何做到这一点?我对 laravel 真的很陌生 :(
  • 我通过这个例子做了一些事情:stackoverflow.com/questions/21305111/… 但是我总是得到空数组。怎么了? :(
  • @MegoSoft,请看我的更新一步一步获得多级meus。
  • 非常感谢。这很有帮助。我只有一个问题。 $menus = Menu::where('parent_id', 0)->orderBy('order', 'ASC')->get();是否可以在这里添加 ->join() ?我需要连接到另一个表来获取模块名称。
  • 是的,你可以。但是您必须在选择中指定特定的菜单 ID。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 2014-01-14
  • 1970-01-01
  • 2020-12-26
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
相关资源
最近更新 更多