laralabs/menu

Menu package for Laravel, build it with classes, and render it how you want to from a collection/array/json.

2.0.0 2020-10-14 22:38 UTC

This package is auto-updated.

Last update: 2024-12-15 07:27:30 UTC


README

Stable Build Build Status StyleCI

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!