ibecsystems/admin-kit-navigation

AdminKit 的导航菜单包

资助包维护!
ryangjchandler

安装: 413

依赖项: 1

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 60

类型:admin-kit-package

v3.1.0 2024-07-05 01:56 UTC

This package is auto-updated.

Last update: 2024-09-05 02:29:20 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此 Filament 插件提供了一个 Navigation 资源,允许您使用干净的拖放 UI 构建结构化导航菜单。

安装

首先通过 Composer 安装此包

composer require ibecsystems/admin-kit-navigation

运行迁移。

php artisan migrate

发布包的资产

php artisan filament:assets

使用方法

您首先需要在 Filament 中注册此插件。这可以在您的 PanelProvider 中完成,例如 AdminPanelProvider

use RyanChandler\FilamentNavigation\FilamentNavigation;

return $panel
    ->plugin(FilamentNavigation::make());

如果您想自定义导航组、排序或图标,可以使用 NavigationResource::navigationGroup()NavigationResource::navigationSort()NavigationResource::navigationIcon() 方法。

数据结构

每个导航菜单都必须有一个 namehandlehandle 应该是唯一的,并用于检索菜单。

项目存储在名为 items 的 JSON 列表中。这是一个类似于以下结构的递归数据结构:

[
    {
        "label": "Home",
        "type": "external-link",
        "data": {
            "url": "/",
            "target": "_blank",
        },
        "children": [
            // ...
        ],
    }
]

递归结构使得渲染嵌套菜单/下拉菜单变得非常简单

<ul>
    @foreach($menu->items as $item)
        <li>
            {{ $item['label'] }}

            @if($item['children'])
                <ul>
                    {{-- Render the item's children here... --}}
                </ul>
            @endif
        </li>
    @endforeach
</ul>

检索导航对象

要检索导航对象,请将句柄提供给 RyanChandler\FilamentNavigation\Models\Navigation::fromHandle() 方法。

use RyanChandler\FilamentNavigation\Models\Navigation;

$menu = Navigation::fromHandle('main-menu');

自定义项目类型

默认情况下,此插件包含一个名为 "External link" 的单个 "项目类型"。此项目类型期望提供一个 URL 和可选的 "目标"(同一选项卡或新选项卡)。

可以通过自定义项目类型扩展此插件。自定义项目类型有一个名称和一个 Filament 字段对象数组(或一个产生数组的 Closure),这些对象将显示在 "项目" 模态中。

此 API 允许您将导航菜单与您应用程序的实体和模型进行深度集成。

return $panel
    ->plugin(
        FilamentNavigation::make()
            ->itemType('post', [
                Select::make('post_id')
                    ->//...
            ])
    );

所有自定义字段都可以在项目的 data 属性中找到。

全局自定义字段

可能存在您希望所有项目类型都有一组额外字段的情况。这对于类、自定义 ID 等非常有用。

要注册全局自定义字段,请使用插件对象的 withExtraFields() 方法。

return $panel
    ->plugin(
        FilamentNavigation::make()
            ->withExtraFields([
                TextInput::make('classes'),
            ]),
    );

Navigation 字段类型

此插件还提供了一个自定义 Filament 字段,可用于在其他表单和资源中搜索和选择导航菜单。

use RyanChandler\FilamentNavigation\Filament\Fields\NavigationSelect;

->schema([
    NavigationSelect::make('navigation_id'),
])

默认情况下,此字段不可搜索,每个选项的值将是菜单的 id

要使字段可搜索,请调用 ->searchable() 方法。

->schema([
    NavigationSelect::make('navigation_id')
        ->searchable(),
])

如果您想更改每个选项的值,请调用 ->optionValue() 方法。

->schema([
    NavigationSelect::make('navigation_id')
        ->optionValue('handle'),
])

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

安全漏洞

有关报告安全漏洞的详细信息,请参阅 我们的安全策略

致谢

许可协议

麻省理工学院许可证(MIT)。请参阅许可证文件获取更多信息。