balajidharma/laravel-menu

Laravel database menu manager
17,835 16
Install
composer require balajidharma/laravel-menu
Latest Version:v3.0.1
License:MIT
Last Updated:May 14, 2026
Links: GitHub  ·  Packagist
Maintainer: balajidharma

Table of Contents

Installation

  • Install the package via composer
composer require balajidharma/laravel-menu
  • Publish the migration and the config/menu.php config file with
php artisan vendor:publish --provider="BalajiDharma\LaravelMenu\MenuServiceProvider"
  • Run the migrations
php artisan migrate

Demo

The "Basic Laravel Admin Penel" starter kit come with Laravel Menu

Create Menu


use BalajiDharma\LaravelMenu\Models\Menu;

Menu::create([
    'name' => 'Main Menu',
    'machine_name' => 'main_menu',
    'description' => 'Site main menu',
]);

Create Menu Item


use BalajiDharma\LaravelMenu\Models\Menu;
use BalajiDharma\LaravelMenu\Models\MenuItem;

$menu = Menu::create([
    'name' => 'Main Menu',
    'machine_name' => 'main_menu',
    'description' => 'Site main menu'
]);

$menu->menuItems()->create([
    'name' => 'Home',
    'uri' => '/',
    'enabled' => 1,
    'parent_id' => null,
    'weight' => 0
]);

Create multiple Menu Items

$menu = Menu::create([
    'name' => 'Admin',
    'machine_name' => 'admin',
    'description' => 'Admin Menu',
]);

$menu_items = [
    [
        'name'      => 'Dashboard',
        'uri'       => '/dashboard',
        'enabled'   => 1,
        'weight'    => 0,
    ],
    [
        'name'      => 'Permissions',
        'uri'       => '/<admin>/permission',
        'enabled'   => 1,
        'weight'    => 1,
    ],
    [
        'name'      => 'Roles',
        'uri'       => '/<admin>/role',
        'enabled'   => 1,
        'weight'    => 2,
    ],
    [
        'name'      => 'Users',
        'uri'       => '/<admin>/user',
        'enabled'   => 1,
        'weight'    => 3,
    ],
    [
        'name'      => 'Menus',
        'uri'       => '/<admin>/menu',
        'enabled'   => 1,
        'weight'    => 4,
    ]
];

$menu->menuItems()->createMany($menu_items);

Menu Tree

  • Get menu tree by using menu id
use BalajiDharma\LaravelMenu\Models\MenuItem;

$items = (new MenuItem)->toTree($menu->id);
  • Get menu tree by using menu machine name
use BalajiDharma\LaravelMenu\Models\Menu;

$items = Menu::getMenuTree('admin');

Menu Link Tokens

  • Enter <admin> to add admin prefix to the link.
  • Enter <nolink> for non link menu.

Get the generated uri on link attribute

use BalajiDharma\LaravelMenu\Models\MenuItem;


MenuItem::find(1)->link;

Related Packages

awes-io/navigator

🧿 Build navigation or menu for Laravel and Awes.io. Unlimit complexity and dept...

22,783 49
notebrainslab/filament-menu-manager

A powerful Filament v4 & v5 plugin for managing menus with multiple locations, d...

3,179 8
kodicomponents/navigation

The KodiCMS Support package.

242,518 12
hieu-le/laravel-menu

Help to build menus easier in Laravel applications

2,898 9
maatwebsite/laravel-sidebar

A sidebar builder for Laravel

334,382 107