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-04-15 05:59:30 UTC


README

68747470733a2f2f6173736574732e6c6172616c6162732e756b2f7061636b616765732f6d656e752f6d656e755f6c6f676f2e706e67

Stable Build Build Status StyleCI 68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f39313939663634306137326263333563316231302f6d61696e7461696e6162696c697479 68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f39313939663634306137326263333563316231302f746573745f636f766572616765

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!