balajidharma/laravel-menu

Laravel database menu manager

Maintainers

👁 balajidharma

Package info

github.com/balajidharma/laravel-menu

pkg:composer/balajidharma/laravel-menu

Statistics

Installs: 16 566

Dependents: 3

Suggesters: 0

Stars: 17

Open Issues: 0

v3.0.1 2026-05-13 00:35 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 5de2953a33bbbd65570b2b59b72c9581cb865568

menularavellaravel-menumenu-managerlaravel-menu-manager


README

Create database based Menu and Menu items to your Laravel projects.

👁 Total Downloads
👁 Latest Stable Version
👁 License

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;