https://github.com/balajidharma/laravel-menu
Laravel Menu - Create database based Menu and Menu items to your Laravel projects
https://github.com/balajidharma/laravel-menu
admin-panel database-menus laravel laravel-database-based-menu laravel-framework laravel-menu laravel-package menu php
Last synced: about 1 month ago
JSON representation
Laravel Menu - Create database based Menu and Menu items to your Laravel projects
- Host: GitHub
- URL: https://github.com/balajidharma/laravel-menu
- Owner: balajidharma
- License: mit
- Created: 2023-01-09T00:04:44.000Z (over 2 years ago)
- Default Branch: 2.x
- Last Pushed: 2025-03-01T15:33:44.000Z (3 months ago)
- Last Synced: 2025-04-23T21:48:30.695Z (about 1 month ago)
- Topics: admin-panel, database-menus, laravel, laravel-database-based-menu, laravel-framework, laravel-menu, laravel-package, menu, php
- Language: PHP
- Homepage:
- Size: 25.4 KB
- Stars: 16
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Laravel Menu
Create database based Menu and Menu items to your Laravel projects.
## Table of Contents
- [Installation](#installation)
- [Demo](#demo)
- [Create Menu](#create-menu)
- [Create Menu Item](#create-menu-item)
- [Create multiple Menu Items](#create-multiple-menu-items)
- [Menu Tree](#menu-tree)
- [Menu Link Tokens](#menu-link-tokens)## Installation
- Install the package via composer
```bash
composer require balajidharma/laravel-menu
```
- Publish the migration and the config/menu.php config file with
```bash
php artisan vendor:publish --provider="BalajiDharma\LaravelMenu\MenuServiceProvider"
```
- Run the migrations
```bash
php artisan migrate
```## Demo
The "[Basic Laravel Admin Penel](https://github.com/balajidharma/basic-laravel-admin-panel)" starter kit come with Laravel Menu## Create Menu
```phpuse BalajiDharma\LaravelMenu\Models\Menu;
Menu::create([
'name' => 'Main Menu',
'machine_name' => 'main_menu',
'description' => 'Site main menu',
]);
```## Create Menu Item
```phpuse 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
```php
$menu = Menu::create([
'name' => 'Admin',
'machine_name' => 'admin',
'description' => 'Admin Menu',
]);$menu_items = [
[
'name' => 'Dashboard',
'uri' => '/dashboard',
'enabled' => 1,
'weight' => 0,
],
[
'name' => 'Permissions',
'uri' => '//permission',
'enabled' => 1,
'weight' => 1,
],
[
'name' => 'Roles',
'uri' => '//role',
'enabled' => 1,
'weight' => 2,
],
[
'name' => 'Users',
'uri' => '//user',
'enabled' => 1,
'weight' => 3,
],
[
'name' => 'Menus',
'uri' => '//menu',
'enabled' => 1,
'weight' => 4,
]
];$menu->menuItems()->createMany($menu_items);
```## Menu Tree
- Get menu tree by using menu id
```php
use BalajiDharma\LaravelMenu\Models\MenuItem;$items = (new MenuItem)->toTree($menu->id);
```- Get menu tree by using menu machine name
```php
use BalajiDharma\LaravelMenu\Models\Menu;$items = Menu::getMenuTree('admin');
```## Menu Link Tokens
- Enter `` to add admin prefix to the link.
- Enter `` for non link menu.Get the generated uri on `link` attribute
```php
use BalajiDharma\LaravelMenu\Models\MenuItem;MenuItem::find(1)->link;
```