spatie/menu
Fluent, extensible menu builder for Laravel. Compose navigation with a clean API, render as HTML, and customize output via presenters and macros. Supports active state handling, links, submenus, and easy integration with Blade and your app’s routing.
laravel-menu ships with a View item type, which you can use to render views as menu items. Views are created by specifying the view's name, and optionally passing data.
Menu::new()
->add(View::create('greeting', ['name' => 'Sebastian']));
<!-- resources/views/greeting.blade.php -->
Hello, {{ $name }}!
<ul>
<li>
Hello, Sebastian!
</li>
</ul>
If url is set in the data argument, it will be used to determine the active state of the view with setActiveFromUrl or setActiveFromRequest.
Menu::new()
->add(View::create('greeting', ['name' => 'Sebastian', 'url' => '/profile']))
->setActiveFromUrl('/profile');
<ul>
<li class="active">
Hello, Sebastian!
</li>
</ul>
Additionally, an $active boolean will always be passed to the view.
<!-- resources/views/amIActive.blade.php -->
I'm {{ $active ? 'active' : 'inactive' }}!
How can I help you explore Laravel packages today?