balajidharma/laravel-menu

Laravel 数据库菜单管理器

v2.0.2 2024-08-01 00:42 UTC

This package is auto-updated.

Last update: 2024-09-01 23:45:55 UTC


README

为您的 Laravel 项目创建基于数据库的菜单和菜单项。

Total Downloads Latest Stable Version License

目录

安装

  • 通过 Composer 安装包
composer require balajidharma/laravel-menu
  • 使用以下命令发布迁移和 config/menu.php 配置文件:
php artisan vendor:publish --provider="BalajiDharma\LaravelMenu\MenuServiceProvider"
  • 运行迁移
php artisan migrate

演示

"Basic Laravel Admin Penel" 快速入门套件包含 Laravel Menu。

创建菜单

use BalajiDharma\LaravelMenu\Models\Menu;

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

创建菜单项

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
]);

创建多个菜单项

$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);

菜单树

  • 通过菜单 ID 获取菜单树
use BalajiDharma\LaravelMenu\Models\MenuItem;

$items = (new MenuItem)->toTree($menu->id);
  • 通过菜单机器名获取菜单树
use BalajiDharma\LaravelMenu\Models\Menu;

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

菜单链接令牌

  • 输入 <admin> 以将 admin 前缀添加到链接。
  • 输入 <nolink> 以创建非链接菜单。

link 属性上获取生成的 URI

use BalajiDharma\LaravelMenu\Models\MenuItem;


MenuItem::find(1)->link;