laralabs / menu
Menu package for Laravel, build it with classes, and render it how you want to from a collection/array/json.
Requires
- php: ^7.3
- illuminate/support: ^5.5|^6.0|^7.0|^8.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^3.4|^4.0|^5.0|^6.0
- phpunit/phpunit: >6.0
- spatie/phpunit-snapshot-assertions: ^2.0|^3.0|^4.0
This package is auto-updated.
Last update: 2024-11-15 07:18:17 UTC
README
Laralabs Menu
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!
🚀 Quick Start
Installation
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.
Usage
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
Documentation TBC, take a look at the tests :)
💬 Support
Please raise an issue on GitHub if there is a problem.
🔑 License
This is open-sourced software licensed under the MIT License.
🙏 Credits
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!