Laravel 7.x with Nova 无法使用optimistdigitalnova-menu-builder的菜单。

问题描述 投票:0回答:1

我是一个新的Laravel Nova... 我刚刚安装了optimistdigitalnova-menu-built,为了更有效地生成菜单,然后由nova生成。我的菜单结构非常复杂,需要更多的控制. 总之,我安装了这个软件包并创建了一个菜单。我现在想把它加载到侧边栏中,但不知道该如何操作......。

在导航.blade.php文件中,我添加了。

@menu("admin")

我在导航.Blade.php文件中添加了: 管理员应该是菜单Slug的地方

刷新后,什么都没有发生。所以我尝试了一些更基本的东西。我删除了@menu,并添加了 "hello world"。它没有出现... 所以我运行了以下命令。

php artisan config:clear
php artisan cache:clear
php artisan nova:publish

三条命令都没出错 但是侧边栏仍然没有显示我的hello world。

所以我的问题如下。我如何在刀片视图中反映我的更改?@menu("")是使用optimistdigitalnova-menu-builder包的正确方法吗?文档中似乎缺少关于如何使用您创建的菜单的部分...... 先谢谢你!

这是我的布局页面

<router-link exact tag="h3"
    :to="{
        name: 'dashboard.custom',
        params: {
            name: 'main'
        }
    }"
    class="cursor-pointer flex items-center font-normal dim text-white mb-8 text-base no-underline">

    <svg>[Long SVG string]</svg>

    <span class="text-white sidebar-label">{{ __('Dashboard') }}</span>
</router-link>


hello world
@menu("admin")

@if (\Laravel\Nova\Nova::availableDashboards(request()))
    <ul class="list-reset mb-8">
        @foreach (\Laravel\Nova\Nova::availableDashboards(request()) as $dashboard)
            <li class="leading-wide mb-4 ml-8 text-sm">
                <router-link :to='{
                    name: "dashboard.custom",
                    params: {
                        name: "{{ $dashboard::uriKey() }}",
                    },
                    query: @json($dashboard->meta()),
                }'
                exact
                class="text-white no-underline dim">
                    {{ $dashboard::label() }}
                </router-link>
            </li>
        @endforeach
    </ul>
@endif
laravel laravel-nova laravel-7.x optimistdigitalnova-menu-builder
1个回答
0
投票

引用 本期 在GitHub上。

[nova_get_menu()] 只返回一个PHP数组。你必须自己处理创建HTML。

从2.3.7版本开始,你需要自己使用这个函数来生成自己的菜单HTML。

$menuJson = nova_get_menu('admin')

// Returns:
// [
//     'id',
//     'name',
//     'slug',
//     'locale',
//     'menuItems' => []
// ]

0
投票

感谢韭菜,我找到了如何检索菜单并在此基础上建立。

所以我的第一个问题是我编辑错了文件。你需要先做以下工作。

把novresourcesviewslayout.blade.php中的文件复制到resourcesviewsvendornova中去。

这样做之后,您的更改就会正确反映出来。我把nova view文件夹中的所有文件都移到了这里。

在新创建的resourcesviewsvendornovalayout.blade.php文件中,将这段代码替换为:"我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说。

@foreach (\Laravel\Nova\Nova::availableTools(request()) as $tool)
    {!! $tool->renderNavigation() !!}
@endforeach

换成这段代码

@php
    $menus = [
        nova_get_menu('admin'),
    ];
@endphp

<section style="width: 100%; position: absolute; top: 60px;">
    <ul class="sidebar-menu">
        <li class="sidebar-header">MAIN NAVIGATION</li>
        <li>
            <a href="/nova">
                <i class="fa fa-dashboard"></i> <span>Dashboard</span></i>
            </a>
        </li>
        @foreach ($menus as $menu)
            @continue(is_null($menu))
                <li>
                    <a href="">
                        <i class="fa fa-dashboard"></i> <span>{{ $menu['name'] }}</span> @if ($menu['menuItems'])<i class="fa fa-angle-left pull-right"></i> @endif
                    </a>
                    @if ($menu['menuItems'])
                        <ul class="sidebar-submenu">
                            @foreach (($menu['menuItems'] ?? []) as $item)
                                <li>
                                    @if ($item['type'] === 'text')
                                    <a href="">{{ $item['name'] }}</a>
                                    @else
                                        <a href="{{ $item['value'] }}"
                                            target="{{ $item['target'] }}"
                                            @if ($item['target'] === '_blank') rel="noopener" @endif><i class="fa fa-circle-o"></i> {{ $item['name'] }}</a>
                                    @endif
                                </li>
                            @endforeach
                        </ul>
                    @endif
                </li>
        @endforeach
        <li>
            <a href="/nova/logout">
                <i class="fa fa-sign-out"></i> <span>Logout</span></i>
            </a>
        </li>
    </ul>
</section>

将 "admin "替换为你的菜单中的 "slug",你可以将HTML改为你想要的任何内容。

我使用的是 https:/www.jqueryscript.netmenuStylish-Multi-level-Sidebar-Menu-Plugin-With-jQuery-sidebar-menu-js.html

而结果是。

enter image description here

如果你需要的话,你可以像这样添加多个菜单。

@php
    $menus = [
        nova_get_menu('admin'),
        nova_get_menu('user'),
        nova_get_menu('pages'),
        nova_get_menu('configuration'),
        nova_get_menu('store'),
    ];
@endphp

foreach循环会按照你在$menus数组中的顺序将它们全部添加到你的页面中。

祝您好运

© www.soinside.com 2019 - 2024. All rights reserved.