smorken/menu

菜单构建助手

v2.2.2 2024-07-31 16:55 UTC

This package is auto-updated.

Last update: 2024-08-31 17:07:53 UTC


README

许可证

此软件是开源软件,根据MIT许可证授权。

Laravel 框架是开源软件,根据MIT许可证授权。

安装(Laravel)

服务提供者和外观应该会自动注册。如果没有,您可以手动将 Smorken\Menu\ServiceProvider::class 添加到 config/app.php 文件的 providers 部分,将 'Menu' => Smorken\Menu\Facades\Menu::class 添加到 aliases 部分。

发布文件

php artisan vendor:publish --provider="Smorken\Menu\ServiceProvider"

这将提供 config/menus.php

创建您需要的菜单。

Bootstrap 4 示例 - 使用 Laravel 通过 Menu 外观访问器

($controller 在控制器中简单地是 view()->share('controller', get_called_class()) )

@can('role-admin')
    <?php $menus = Menu::getMenusByKey('role-admin'); ?>
    @if ($menus)
        <li class="nav-item dropdown">
            <a id="navbarAdminDropdown"
               class="nav-link dropdown-toggle {{ Menu::isActiveChain($controller, $menus) ? 'text-primary' : null }}"
               href="#" role="button" data-toggle="dropdown"
               aria-haspopup="true" aria-expanded="false" v-pre>
                Admin <span class="caret"></span>
            </a>

            <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarAdminDropdown">
                @foreach($menus as $menu)
                    <?php $active = Menu::isActiveChain($controller, $menu); ?>
                    <?php $sub = $active && isset($menu['children']) ? $menu['children'] : null; ?>
                    <a class="dropdown-item {{ $active ? 'text-primary' : null }}"
                       href="{{ action($menu->action) }}">{{ $menu->name }}</a>
                @endforeach
            </div>
        </li>
    @endif
@endcan
@include('submenu')

子菜单

<?php
$sub = isset($sub) ? $sub : null;
$next = null;
?>
@if ($sub)
    <nav class="sub-menu mb-1">
        <ul class="nav nav-pills">
            @foreach ($sub as $menu)
                <?php $active = Menu::isActiveChain($controller, $menu); ?>
                @if ($active && count($menu->children))
                    <?php $next = $menu->children; ?>
                @endif
                <li class="nav-item">
                    <a class="nav-link {{ $active ? 'active' : '' }}" href="{{ action($menu->action) }}">
                        {{ $menu->name }}
                    </a>
                </li>
            @endforeach
        </ul>
    </nav>
@endif
@if ($next)
    @include('submenu', ['sub' => $next])
@endif