PHPackages                             malezha/laravel-menu - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. malezha/laravel-menu

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

malezha/laravel-menu
====================

Menu builder for Laravel 5

3.2.0(8y ago)3215MITPHPPHP &gt;=5.6

Since Aug 24Pushed 8y ago2 watchersCompare

[ Source](https://github.com/Malezha/menu)[ Packagist](https://packagist.org/packages/malezha/laravel-menu)[ RSS](/packages/malezha-laravel-menu/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)Dependencies (6)Versions (11)Used By (0)

Laravel Menu
------------

[](#laravel-menu)

[![Build](https://camo.githubusercontent.com/fd4981321573a39aeb9f608134db2b226a7d1322666c6e83e9f4bccabaa243e8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d352e342d6f72616e67652e737667)](https://laravel.com)[![Build Status](https://camo.githubusercontent.com/eca7b9ad758de5abdfbe272e3defe03e02b09e8e4cf706f09b34566d966e8a95/68747470733a2f2f7472617669732d63692e6f72672f4d616c657a68612f6d656e752e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/Malezha/menu)[![Latest Stable Version](https://camo.githubusercontent.com/54e333c77c1f8500dcb7a5608cdeb99250efdecdb5b7f1890cafb15d84d28a98/68747470733a2f2f706f7365722e707567782e6f72672f6d616c657a68612f6c61726176656c2d6d656e752f762f737461626c65)](https://packagist.org/packages/malezha/laravel-menu)[![Total Downloads](https://camo.githubusercontent.com/ce43823e9ae7aeb1d571386b0433803357268811b379fd4795c8150731e18b81/68747470733a2f2f706f7365722e707567782e6f72672f6d616c657a68612f6c61726176656c2d6d656e752f646f776e6c6f616473)](https://packagist.org/packages/malezha/laravel-menu)[![Latest Unstable Version](https://camo.githubusercontent.com/ba5eb2c130df7154789e9fd7c49a4f8e197564e52e07a8e121c8dfd00b69616c/68747470733a2f2f706f7365722e707567782e6f72672f6d616c657a68612f6c61726176656c2d6d656e752f762f756e737461626c65)](https://packagist.org/packages/malezha/laravel-menu)[![Code Coverage](https://camo.githubusercontent.com/d8e6aa6744e8624477f3d3ceaec261cf09dc6d4a8ab32acf781266c66a7882d0/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4d616c657a68612f6d656e752f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Malezha/menu/?branch=master)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/269a8bd3ff167943368b15071ef3cbfc1ff076a608c57a03eafe66271d08d388/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4d616c657a68612f6d656e752f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/Malezha/menu/?branch=master)[![License](https://camo.githubusercontent.com/fe21e406616462b1a32069adec73ba6fc902e9e20bb982a0a854a2e28f1e2978/68747470733a2f2f706f7365722e707567782e6f72672f6d616c657a68612f6c61726176656c2d6d656e752f6c6963656e7365)](https://packagist.org/packages/malezha/laravel-menu)

### Install

[](#install)

Require this package with composer using the following command:

```
composer require malezha/laravel-menu
```

After updating composer, add the ServiceProvider to the providers array in config/app.php

```
Malezha\Menu\MenuServiceProvider::class,
```

For use facade add alias to config/app.php

```
'Menu' => Malezha\Menu\MenuFacade::class,
```

Copy the package config to your local config with the publish command:

```
php artisan vendor:publish --provider="Malezha\Menu\MenuServiceProvider"
```

### Usage

[](#usage)

```
use Malezha\Menu\Contracts\Builder;
use Menu;

Menu::make('main', function(Builder $builder) {
    // Create menu element
    $builder->create('element_name', ElementClass::class, function (ElementFactory $factory) {
        $factory->elementParameter;

        return $factory->build();
    });

    # Avaliable elements
    // Link. Html:
    // title
    use Malezha\Menu\Element\Link;
    use Malezha\Menu\Factory\LinkFactory;
    $builder->create('link', Link::class, function (LinkFactory $factory) {
        $factory->title = 'Title';
        $factory->url = '/';
        $factory->attributes->put('class', 'li');
        $factory->activeAttributes->push(['class' => 'active-element']);
        $factory->linkAttributes->set(['id' => 'link']);
        $factory->displayRule = true; // Boolean or callable witch return boolean

        return $factory->build();
    });

    // Submenu. Html:
    //
    //  title
    //  ...
    //
    use Malezha\Menu\Element\SubMenu;
    use Malezha\Menu\Factory\SubMenuFactory;
    $builder->create('submenu', SubMenu::class, function (SubMenuFactory $factory) {
        // Submenu exdends Link so all parameters available
        $factory->builder->create(...); // Create submenu element

        return $factory->build();
    });

    // Text. Html:
    // Text
    use Malezha\Menu\Element\Text;
    use Malezha\Menu\Factory\TextFactory;
    $builder->create('submenu', Text::class, function (TextFactory $factory) {
        $factory->text = 'Text';
        $factory->attributes->put('class', 'deliver');
        $factory->displayRule = true;

        return $factory->build();
    });
});

// Building menu from array
$array = [
    'type' => 'ul',
    'view' => 'menu::view', // Default view
    'attributes' => [
        'class' => 'menu',
    ],
    'activeAttributes' => [
        'class' => 'active',
    ],
    'elements' => [
        'index' => [
            'type' => 'link',
            'view' => 'menu::elements.link', // Default view may be changed in config
            'url' => 'http://example.com',
            'attributes' => [],
            'activeAttributes' => [
                class' => 'active',
            ],
            'linkAttributes' => [],
            'displayRule' => true,
        ],
        ...
        'settings' => [
            'type' => 'submenu',
            'view' => 'menu::elements.submenu',
            'url' => 'http://example.com',
            'attributes' => [],
            'activeAttributes' => [
                class' => 'active',
            ],
            'linkAttributes' => [],
            'displayRule' => true,
            'builder' => [
                'type' => 'ul',
                'view' => '_partial.submenu', // U can set view for submenu singly
                ...
                'elements' => [
                    ...
                ],
            ],
        ],
    ]
];

$builder = Menu::fromArray('from-array', $array);
$html = $builder->render(); // Menu::render('from-array');
// $builder->toArray() === $array;
```

### Simple example

[](#simple-example)

```
use Malezha\Menu\Contracts\Builder;
use Malezha\Menu\Element\Link;
use Malezha\Menu\Element\SubMenu;
use Malezha\Menu\Factory\LinkFactory;
use Malezha\Menu\Factory\SubMenuFactory;
use Menu;

Menu::make('main', function (Builder $builder) {
    $builder->create('index', Link::class, function(LinkFactory $factory) {
        $factory->title = 'Index Page';
        $factory->url = '/';
        $factory->linkAttributes->push(['class' => 'menu-link']);

        return $factory->build();
    });

    $builder->create('orders', SubMenu::class, function(SubMenuFactory $factory) {
        $factory->attributes->push(['class' => 'child-menu']);
        $factory->title = 'Orders';
        $factory->url = 'javascript:;';

        $factory->builder->create('all', Link::class, function(LinkFactory $factory) {
            $factory->title = 'All';
            $factory->url = '/orders/all';

            return $factory->build();
        });

        $factory->builder->create('type_1', Link::class, function(LinkFactory $factory) {
            $factory->title = 'Type 1';
            $factory->url = '/orders/1';
            $factory->linkAttributes->push(['class' => 'text-color-red']);

            return $factory->build();
        });

        $factory->builder->create('type_2', Link::class, function(LinkFactory $factory) {
            $factory->title = 'Type 2';
            $factory->url = '/orders/2';
            $factory->linkAttributes->push(['data-attribute' => 'value']);

            return $factory->build();
        });

        return $factory->build();
    });
});
```

```

    Index Page

        Orders

            All
            Type 1
            Type 2

```

### License

[](#license)

[MIT license](https://github.com/Malezha/menu/blob/master/LICENSE)

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 66.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~85 days

Total

9

Last Release

3233d ago

Major Versions

1.1.0 → 3.0.0-alpha2016-05-31

### Community

Maintainers

![](https://www.gravatar.com/avatar/d92181831933a4c9b7b3a7434c7bf1435cabc6f70b54d7f7eaa5f2b4c075558a?d=identicon)[Malezha](/maintainers/Malezha)

---

Top Contributors

[![Malezha](https://avatars.githubusercontent.com/u/3649525?v=4)](https://github.com/Malezha "Malezha (2 commits)")[![scrutinizer-auto-fixer](https://avatars.githubusercontent.com/u/6253494?v=4)](https://github.com/scrutinizer-auto-fixer "scrutinizer-auto-fixer (1 commits)")

---

Tags

laravelmenu

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/malezha-laravel-menu/health.svg)

```
[![Health](https://phpackages.com/badges/malezha-laravel-menu/health.svg)](https://phpackages.com/packages/malezha-laravel-menu)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3274.9M308](/packages/psalm-plugin-laravel)[unisharp/laravel-filemanager

A file upload/editor intended for use with Laravel 5 to 10 and CKEditor / TinyMCE

2.2k3.3M74](/packages/unisharp-laravel-filemanager)[watson/active

Laravel helper for recognising the current route, controller and action

3253.6M14](/packages/watson-active)[anahkiasen/former

A powerful form builder

1.4k1.4M14](/packages/anahkiasen-former)[vespakoen/menu

Managing menus the easy way.

27887.0k5](/packages/vespakoen-menu)[laragear/preload

Effortlessly make a Preload script for your Laravel application.

119363.5k](/packages/laragear-preload)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
