So richten Sie Menü in Laravel 11 ein
Posted: 19 May 2025, 09:12
Dies ist meine Seitenleiste.blade.php < /p>
Mein Problem ist, wie ich das aktive Menü/Submenu1/Submenu2 in meinem dynamischen Menü oben besiedelt? mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm und .mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmMMMPI.>
Code: Select all
[url=index.html][i][/url]
[/i]
[i] [/i]
[url=index.html]
[i][/i]
[/url]
@php
use App\Models\Menu;
## Ambil semua permission milik user yang sedang login
$permissions = auth()->user()->getAllPermissions();
## Buat array permission untuk user
$userPermissions = [];
foreach ($permissions as $permission) {
$routeMenu = explode('-', $permission->name)[0];
if (!in_array($routeMenu, $userPermissions)) {
$userPermissions[] = $routeMenu;
}
}
## Ambil semua menu berdasarkan permission
$menus = Menu::with([
'children' => function ($query) use ($userPermissions) {
## Hanya child menu dengan akses permission
$query->whereIn('url', $userPermissions)
## Izinkan child menu tanpa URL
->orWhere('url', '#')
## Urutkan child menu
->orderBy('order', 'asc');
}
])
## Pastikan hanya mengambil menu utama (parent menu)
->whereNull('parent_id')
->where(function ($query) use ($userPermissions) {
## Parent menu dengan akses langsung
$query->whereIn('url', $userPermissions)
->orWhere(function ($subQuery) use ($userPermissions) {
## Parent menu dengan url "#"
$subQuery->where('url', '#')
->whereHas('children', function ($childQuery) use ($userPermissions) {
## Pastikan parent punya child yang valid
$childQuery->whereIn('url', $userPermissions)
## Child menu tanpa URL
->orWhere('url', '#');
});
});
})
->orderBy('order', 'asc') // Urutkan parent menu
->get();
@endphp
[i][/i]
[list]
[*]
Back[i][/i]
@php $currentRoute = explode('.', request()->route()->getName())[0];@endphp
@foreach ($menus as $menu)
[*]
[i][/i]
[url={{ $menu-]url != '#' ? route($menu->url.'.index') : '#' }}">
[i]icon }}">[/i]{{ $menu->name }}
[/url]
@if ($menu->children->isNotEmpty())
@foreach ($menu->children as $child)
[url={{ $child-]url != '#' ? route($child->url.'.index') : '#' }}">
{{ $child->name }}
[/url]
@if ($child->children->isNotEmpty())
@foreach ($child->children as $subChild)
[url={{ $subChild-]url != '#' ? route($subChild->url.'.index') : '#' }}">
{{ $subChild->name }}
[/url]
@endforeach
[/list]
@endif
@endforeach
@endif
@endforeach
[*]
[i][/i]
@csrf
[url=javascript:;]
[i][/i] Logout
[/url]
[i][/i]