Simple, extendable menu package for Laravel.
You define how it renders, the package just gives you the data to do it with.
- Attach to a blade file via a view composer.
- Pass data into a Vue component, or do whatever you want with it!
Require the package in the composer.json
of your project.
composer require laralabs/menu
Publish the configuration file.
php artisan vendor:publish --tag=laralabs-menu-config
Not much in the configuration file at the moment, but you can choose to register your menus in here if you wish.
Add the ResolveMenus
middleware to your app/Http/Kernel.php
in the $middleware
array:
protected $middleware = [
// Existing Middleware
\Laralabs\Menu\Middleware\ResolveMenus::class,
];
Currently there are no make commands, but there are example menus found in the tests/Fakes
directory.
Build a class that extends Laralabs\Menu\Contracts\Menu
and implement the required methods.
Extenders can be built by creating a class that extends implements Laralabs\Menu\Contracts\MenuExtender
, edit the menu and then return then return it out of the handle method with the closure $next($menu)
.
Quick example of creating a menu in the build()
method:
public function build(): void
{
$this->menu->group('groupOne', static function (Group $group) {
$group->item('Group One, Item One', function (Item $item) {
$item->subItem('Sub Item');
});
});
}
Documentation TBC, take a look at the tests :)
Please raise an issue on GitHub if there is a problem.
This is open-sourced software licensed under the MIT License.
Adapted from Maatwebsite/Laravel-Sidebar for my own requirements, thank you to everyone at Maatwebsite for the work they do. Also, theirs might have a feature mine doesn't so go check it out too!