salahhusa9 / laravel-menu
为Laravel生成HTML菜单的工具
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.0|^8.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- dev-main
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.0
- v0.0.1
- dev-renovate/shivammathur-setup-php-digest
- dev-v2-beta
- dev-renovate/pestphp-pest-3.x
- dev-renovate/pestphp-pest-plugin-laravel-3.x
- dev-renovate/pestphp-pest-plugin-arch-3.x
- dev-badgeName-as-callable
- dev-add-laravel-11-in-github-actions
- dev-support-laravel-11
- dev-problem-of-not-active-open-item-if-has-many-child-levels-and-one-active
- dev-Support-Multiple-Menu
- dev-check-Gate
This package is auto-updated.
Last update: 2024-09-16 18:34:38 UTC
README
这是一个在Laravel应用程序中构建菜单的有用包,它可以帮助简化您应用程序中创建和管理菜单的过程。
安装
您可以通过composer安装此包
composer require salahhusa9/laravel-menu
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="menu-config"
可选地,您可以使用以下命令发布视图
php artisan vendor:publish --tag="menu-views"
使用
基本
您可以在应用程序中的任何位置创建菜单,但最佳位置是在AppServiceProvider.php文件中的boot()方法。
use SalahHusa9\Menu\Facades\Menu; public function boot() { Menu::add('test', 'route.name', 'fa fa-home'); }
使用add()方法向菜单中添加项目。您可以通过多次调用add()来添加多个项目。
Menu::add('test') ->add('test2');
要创建子菜单,请在菜单项上调用addSubmenu(),然后使用add()方法向子菜单中添加项目。
Menu::add('test') ->add('test2') ->addSubmenu('test3', function ($submenu) { $submenu->add('test4'); }) ->add('test5');
Blade
要渲染菜单,请使用<x-menu />
blade组件。
<x-menu />
菜单的自定义
您可以通过将图标参数传递给add()方法将图标添加到菜单项。
Menu::add('test', 'route.name', ['icon' => 'fa fa-home']);
您还可以通过将id和class参数传递给add()方法将id和class添加到菜单项。
Menu::add('test', 'route.name',['class' => 'customClass', 'id' => 'customId']);
您还可以通过将target参数传递给add()方法将目标添加到菜单项。
Menu::add('test', 'route.name', ['target' => '_blank']);
您还可以通过将badgeClass和badgeName参数传递给add()方法将徽章添加到菜单项。
Menu::add('test', 'route.name', ['badgeClass' => 'badge badge-success', 'badgeName' => 'New']);
您还可以
// old: if (auth()->user()->can('gateName')){ Menu::add('test', 'route.name'); } // new: Menu::add('test', 'route.name', ['gateName' => 'gateName']);
菜单视图的自定义
您可以通过发布视图来自定义菜单视图
php artisan vendor:publish --tag="menu-views"
多个菜单
您可以在应用程序中创建多个菜单
Menu::make('sidebar', function ($menu) { $menu->add('test', 'route.name'); }); Menu::make('main', function ($menu) { $menu->add('test', 'route.name'); });
要渲染菜单,请使用<x-menu for="sidebar" />
blade组件。
配置默认菜单的Ul和Li类以及活动类
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="menu-config"
并且您可以更改默认菜单的Ul和Li类以及活动类
return [ "ul_class" => "menu-inner py-1", // default menu class "ul_sub_menu_class" => "menu-sub", // default submenu class "li_class" => "menu-item", // default menu item class "li_sub_menu_class" => "menu-item", // default submenu item class "li_sub_menu_open_class" => "menu-item active open", // default submenu item class when open "a_class" => "menu-link", // default menu link class "a_sub_menu_class" => "menu-link menu-toggle", // default submenu link class "icon_class" => "menu-icon", // default menu icon class "li_active_class" => "active", // default active class of li "a_active_class" => "active", // default active class of a "badge_class" => "badge rounded-pill ms-auto", // default badge class ];
高级
每个项目接受以下参数
add( $name, $routeName = null, $options = [], ) addSubmenu( $name, callback $callbackOfSubmenu, $options )
还有其他您可以使用的功能
Menu::getMenuAsJson(); // return the menu as json Menu::renderAsJson(); // return the menu as json Menu::renderAsHtml(); // return the menu as html
路线图
查看公开问题以获取功能建议(和已知问题)的列表。
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请审查我们的安全策略以了解如何报告安全漏洞。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。