An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

        

Laravel Menu


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



Total Downloads
Latest Stable Version
License

## 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
```php

use BalajiDharma\LaravelMenu\Models\Menu;

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

## Create Menu Item
```php

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
```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;
```