ryangjchandler / filament-navigation
在Filament中构建结构化导航菜单。
Requires
- php: ^8.1
- doctrine/dbal: ^3.5.1
- filament/filament: ^3.0
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- nunomaduro/collision: ^7.0|^8.0
- nunomaduro/larastan: ^2.0.1
- orchestra/canvas: ^8.0
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5|^10.0
- spatie/laravel-ray: ^1.26
- dev-main
- v1.0.0-beta5
- v1.0.0-beta4
- v1.0.0-beta3
- v1.0.0-beta2
- v1.0.0-beta1
- v0.5.0
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.0
- dev-dependabot/github_actions/stefanzweifel/git-auto-commit-action-5
- dev-dependabot/github_actions/actions/checkout-4
- dev-dependabot/github_actions/ramsey/composer-install-2
This package is auto-updated.
Last update: 2024-09-13 02:58:57 UTC
README
此Filament插件提供了一个Navigation
资源,允许您使用简洁的拖放UI构建结构化导航菜单。
安装
首先通过Composer安装此包。
composer require ryangjchandler/filament-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()
方法。
数据结构
每个导航菜单都需要有一个name
和handle
。该handle
应该是唯一的,并用于检索菜单。
项存储在一个名为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');
自定义项目类型
默认情况下,此插件包含一个名为“外部链接”的单个项目类型。此项目类型期望提供一个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
更改日志
有关最近更改的更多信息,请参阅CHANGELOG。
贡献
有关详细信息,请参阅CONTRIBUTING。
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅我们的安全策略。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。