sevendays-digital / filament-nested-resources

处理嵌套资源的助手


README

此包为 Filament 添加了对嵌套资源的支持。

它提供基类和列以提供嵌套结构。

目前配置性不强,您需要遵循 Laravel 通常使用的命名约定。

演示

Screen.Recording.2023-04-07.at.13.14.05.mov

安装

您可以通过 composer 安装此包。

composer require sevendays-digital/filament-nested-resources

用法

目前您需要进行一些更改才能使其工作。但您首先需要创建一个 filament 资源(此时父资源应该已经存在。我们要更改的资源是子资源)。

一旦创建,您需要将 Filament/Resources/ChildModelResource.php 修改为 NestedResource

use SevendaysDigital\FilamentNestedResources\Columns\ChildResourceLink;
use SevendaysDigital\FilamentNestedResources\NestedResource;

class ChildModelResource extends NestedResource
{
    public static function getParent(): string
    {
        return ParentModelResource::class;
    }
}

然后,对于每个资源页面,您需要添加 traits

use SevendaysDigital\FilamentNestedResources\ResourcePages\NestedPage;

最后,在您的 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。

注意

您不能为多个父资源使用子资源,但是您可以有多个资源指向同一个模型。

只需确保为资源设置自定义 slug,以便构建唯一的路由。

https://filamentphp.com/docs/2.x/admin/resources/getting-started#customizing-the-url-slug

测试

没有。

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

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

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件