darmshot / filament-nested-resources
Filament的嵌套资源插件
Requires
- php: ^8.1
- filament/filament: ^3.0
- illuminate/contracts: ^9.0|^10.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.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
This package is auto-updated.
Last update: 2024-09-08 14:30:27 UTC
README
此包为Filament 3添加了嵌套资源的支持。
它提供基本类和列以提供嵌套结构。
目前配置性不高,您需要遵循Laravel通常使用的命名约定。
安装
您可以通过composer安装此包
composer require darmshot/filament-nested-resources
使用
但是,您需要进行一些更改才能使其工作。首先,您需要创建一个filament资源(此时父资源应该已经存在。我们要更改的是子资源)。
一旦您有了它,您需要将Filament/Resources/ChildModelResource.php
更改为NestedResource
。
use Darmshot\FilamentNestedResources\Columns\ChildResourceLink; use Darmshot\FilamentNestedResources\NestedResource; class ChildModelResource extends NestedResource { public static function getParent(): string { return ParentModelResource::class; } }
然后为每个资源页面添加特质
use Darmshot\FilamentNestedResources\ResourcePages\NestedCreatePage; use Darmshot\FilamentNestedResources\ResourcePages\NestedEditPage; use Darmshot\FilamentNestedResources\ResourcePages\NestedListPage;
最后,在您的ParentModelResource
中,您可以添加列以提供链接
public static function table(Table $table): Table { return $table ->columns([ ChildResourceLink::make(ChildModelResource::class), ]); }
访问父资源
当您需要在livewire上下文中使用父资源,例如在表单中,您可以在表单方法中添加第二个参数
public static function form(Form $form, ?Event $parent = null): Form;
其中Event
是要作为父资源的模型。
侧边栏
默认情况下,当处于“上下文”时,侧边栏将注册该资源的菜单项。
因此,如果您在项目内部,该项目包含文档,那么当您在项目或更深层次时,侧边栏将显示文档。
如果您不希望这样,您可以在子资源中将shouldRegisterNavigationWhenInContext
设置为false。
备注
您不能将子资源用于多个父资源,但是您可以有多个资源指向同一个模型。
只需确保为资源设置自定义别名,以便构建唯一的路由。
https://filamentphp.com/docs/3.x/panels/pages#customizing-the-page-url
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请参阅我们的安全策略以了解如何报告安全漏洞。
致谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。