使用lavary / laravel-menu从laravel中的数据库动态菜单

时间:2018-09-04 12:22:39

标签: php laravel eloquent laravel-blade

我有一个带有静态菜单的laravel应用程序。 现在,我想将其更改为数据库中的动态菜单。 到目前为止,一切都很好,我迁移了一个名为menu_items的表。

然后我用以下处理方法编写了一个中间件:

public function handle($request, Closure $next)
{
    \Menu::make('mainmenu', function ($menu) {

        $items = MenuItem::all();

        foreach ($items as $item) {

            if ($item->parent_id == null) {

                $menu->add($item->title, $item->link)
                    ->prepend('<i class="'.$item->icon.'"></i>');    
            }
            else {
                // dd($menu);
                $parent = $item->parent_id - 1;
                $menu->find($parent)->add($item->title, $item->link);
            }
        }

    return $next($request);
}

我更改为lavary / laravel-menu并尝试将子菜单动态添加到父菜单项。我不明白为什么laravel总是在

告诉我
$menu->find($parent)->add($item->title, $item->link);

如果我用dd()打印出来,则在null $ parent上调用成员函数add()不会为null如果我执行类似$menu->last()->add($item->title, $item->link);的操作,那不是我想要的...

1 个答案:

答案 0 :(得分:1)

可能您必须在控制器中编写函数,然后将变量返回给模板?您将如何访问{{Menu :: main()}}?

$menu = Menu::build($menu_items, function ($menu, $menu_item) {
        $menu->link($menu_item->title, $menu_item->link);

{{$ menu-> whatDoYouNeedToAccess}}