LaravelPackages.net
Acme Inc.
Toggle sidebar
balajidharma/laravel-menu

Laravel database menu manager

17.313
17
v3.0.1
About balajidharma/laravel-menu

balajidharma/laravel-menu is a Laravel package for laravel database menu manager. It currently has 17 GitHub stars and 17.313 downloads on Packagist (latest version v3.0.1). Install it with composer require balajidharma/laravel-menu. Discover more Laravel packages by balajidharma or browse all Laravel packages to compare alternatives.

Last updated

Laravel Menu

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);
  • 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');
  • 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;
Comments