darmshot / filament-nested-resources

Filament的嵌套资源插件

v1.0.1 2023-09-28 08:30 UTC

README

Latest Version on Packagist

此包为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)。请参阅许可文件以获取更多信息。