toxic-lemurs/menu-builder

适用于 Laravel 6 的简单数据库驱动菜单管理器

2.0.3 2020-11-10 21:33 UTC

This package is auto-updated.

Last update: 2024-09-11 05:53:58 UTC


README

此包允许您创建基于数据库(Eloquent)的树状菜单结构,并通过完全可定制的模板和视图渲染HTML。嵌套级别没有限制,但视图/模板中需要处理级别的数量。

安装

在 composer.json 中要求此包,并更新 composer。这将下载包及其所有依赖项

"toxic-lemurs/menu-builder": "2.*"

或者您可以通过命令行使用 composer 要求此包

$ composer require toxic-lemurs/menu-builder

Laravel 包自动发现

Menu-Builder 包支持包自动发现。如果您不想使用包自动发现,可以在 config/app.php 中的 providers 数组中添加提供者

ToxicLemurs\MenuBuilder\MenuBuilderServiceProvider::class,

可选地,您可以通过在别名数组中添加 facade 来使用 facade

'MenuBuilder' => ToxicLemurs\MenuBuilder\Facades\MenuBuilder::class,

发布迁移和资产

发布 Menu Builder 迁移

$ php artisan vendor:publish --provider="ToxicLemurs\MenuBuilder\MenuBuilderServiceProvider" --tag=migrations
$ php artisan migrate

您可以选择发布视图,以便您可以轻松地用您网站的样式和布局覆盖它们

$ php artisan vendor:publish --provider="ToxicLemurs\MenuBuilder\MenuBuilderServiceProvider" --tag=views

发布配置以绑定并修改默认管理路由到您的项目中

$ php artisan vendor:publish --provider="ToxicLemurs\MenuBuilder\MenuBuilderServiceProvider" --tag=config

入门

在您的视图/模板中,您可以使用 facade 来渲染您的菜单

{!! MenuBuilder::render('Group Name') !!}

或者如果您不想使用别名

{!! ToxicLemurs\MenuBuilder\Facades\MenuBuilder::render('Group Name') !!}

已设置默认路由以管理菜单

/menu - Manages your actual menu items that gets attached to menu groups
/group - Setup menu groups to easily group your different menus

您可以覆盖默认路由以使用您自己的自定义路由(当前包路由是单独定义的,而不是作为资源,以允许覆盖灵活性)

Route::get('my/route/menu', ['uses' => '\ToxicLemurs\MenuBuilder\Http\Controllers\MenuController@index', 'as' => 'menu.index'])

覆盖视图

您可以通过修改已发布的视图来覆盖菜单的默认渲染实现

views/menu/default.blade.php - This is the master template for binding the menu partials
views/menu/partials/list.blade.php - This is the partial that creates the list items / html for the menu

或者您可以在每个菜单级别上指定用于基本模板的自定义模板

{!! MenuBuilder::render('Group Name', $options = [
    'templates' => [
        // The container file overrides the views/menu/default.blade.php template
        'container' => 'foo.bar', // resources/views/foo/bar.blade.php
        
        // The builder file overrides the views/menu/partials/list.blade.php
        'builder' => 'bar.foo', // resource/views/bar/foo.blade.php
    ]
]) !!}

您可以在示例文件夹中查看 Menu Builder 的实现,方法是复制 vendor 文件夹到您的资源文件夹中。请确保您的数据库包含菜单项。示例源可以在这里找到

许可证

此 Laravel 菜单构建器是开源软件,许可协议为MIT 许可证