smartystudio / laravelmenu
此包已被废弃,不再维护。未建议替代包。
Laravel的拖拽式菜单生成器。
v0.1
2022-12-05 14:53 UTC
Requires
- php: >=7.0
- illuminate/support: 5.* || 6.* || 7.* || 8.*
README
为Laravel提供管理界面,便于添加、编辑或删除菜单。
安装
- 在终端
composer require smartystudio/laravelmenu
如果您使用laravel 5.5,步骤2和3是可选的
- 如果您的Laravel版本没有包自动发现功能,则将服务提供者添加到您的config/app.php文件中
SmartyStudio\LaravelMenu\MenuServiceProvider::class,
- 在文件config/app.php中添加外观(laravel 5.5上为可选)
'Menu' => SmartyStudio\LaravelMenu\Facades\Menu::class,
- 发布配置文件并运行迁移。
php artisan vendor:publish --provider="SmartyStudio\LaravelMenu\MenuServiceProvider"
- 在
config/laravelmenu.php
中进行配置(可选)
- 自定义中间件: 您可以添加自己的中间件
- 表前缀: 默认情况下,此包将创建两个新表,名为"menus"和"menu_items",但您仍然可以添加自己的表前缀,以避免与现有表冲突
- 表名: 如果您想使用特定的表名,则必须修改它以及迁移文件
- 自定义路由: 如果您想编辑路由路径,则可以编辑该字段
- 角色访问: 如果您想对菜单项启用角色(权限)
- 运行数据库迁移
php artisan migrate
完成!
菜单构建器使用示例 - 显示构建器
在您的视图blade文件中
@extends('app') @section('contents') {!! Menu::render() !!} @endsection
在菜单脚本之前,您必须加载jQuery
@push('scripts') {!! Menu::scripts() !!} @endpush
使用模型
调用模型类
use SmartyStudio\LaravelMenu\Models\Menu; use SmartyStudio\LaravelMenu\Models\MenuItem;
菜单使用示例(a)
一个基本的二级菜单可以显示在您的blade模板中。
使用模型类
// Get menu by ID $menu = Menu::find(1); // Get menu by Name $menu = Menu::where('name','Test Menu')->first(); /** * Get menu by Name and the Items with eager loading. * This is RECOMENDED for better performance and less query calls. */ $menu = Menu::where('name','Test Menu')->with('items')->first(); // Get menu by ID $menu = Menu::where('id', 1)->with('items')->first(); // Access by Model result $public_menu = $menu->items; // Convert it to Array $public_menu = $menu->items->toArray();
使用助手类
// Using Helper $public_menu = Menu::getByName('Public'); // return array
菜单使用示例(b)
现在在您的blade模板文件中,使用此简单示例放置菜单
<div class="nav-wrap"> <div class="btn-menu"> <span></span> </div><!-- // mobile menu button --> <nav id="mainnav" class="mainnav"> @if($public_menu) <ul class="menu"> @foreach($public_menu as $menu) <li class=""> <a href="{{ $menu['link'] }}" title="">{{ $menu['label'] }}</a> @if( $menu['child'] ) <ul class="sub-menu"> @foreach( $menu['child'] as $child ) <li class=""><a href="{{ $child['link'] }}" title="">{{ $child['label'] }}</a></li> @endforeach </ul><!-- /.sub-menu --> @endif </li> @endforeach <!-- empty --> @endif </ul><!-- /.menu --> </nav><!-- /#mainnav --> </div><!-- /.nav-wrap -->
HELPER函数
根据菜单ID获取菜单项
use SmartyStudio\LaravelMenu\Facades\Menu; ... /** * Parameter: Menu ID * Return: Array */ $menuList = Menu::get(1);
根据菜单名称获取菜单项
在此示例中,您必须有一个名为 Admin 的菜单
use SmartyStudio\LaravelMenu\Facades\Menu; ... /** * Parameter: Menu ID * Return: Array */ $menuList = Menu::getByName('Admin');
菜单自定义
您可以在resources/views/vendor/smartystudio/laravelmenu/menu.blade.php
中发布和编辑菜单布局
变更日志
请参阅变更日志了解最近的变化。
测试
// TODO
贡献
请参阅贡献指南以获取详细信息。
安全
如果您发现任何安全相关的问题,请通过电子邮件联系我们,而不是使用问题跟踪器。
致谢
- Martin Nestorov - Smarty Studio 的网页开发者。
- 所有贡献者
许可
SmartyStudio\LaravelMenu 是开源软件,受 MIT 许可证许可。