savannabits/filament-modules

使用nwidart/laravel-modules将Filament代码组织成模块

v4.0.6 2024-04-24 16:14 UTC

README

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

注意:本文档适用于该包的4.x版本,仅支持Laravel 11nwidart/laravel-modules ^11。如果您使用Laravel 10,请参阅3.x文档

image

此包将模块的力量引入Laravel Filament。它允许您将filament代码组织成完全自治的模块,可以轻松地在多个项目中共享和重用。使用此包,您可以将每个模块转换为具有自己的资源、页面、小部件、组件等的完整功能的Filament插件。更重要的是,您甚至不需要在主Filament面板中注册每个插件。您只需在面板中注册ModulesPlugin即可,它将为您处理其他所有事情。

此包实际上是对nwidart/laravel-modules包的包装,使其能够与Laravel Filament一起使用。

特性

  • 一个准备模块以供Filament使用的命令
  • 在模块中创建Filament集群的命令
  • 在模块中创建额外的Filament插件的命令
  • 在模块中创建新的Filament资源的命令
  • 在模块中创建新的Filament页面的命令
  • 在模块中创建新的Filament小部件的命令
  • 将管理面板组织成集群,每个集群对应一个支持的模块。

需求

此包的v4.x版本需要以下依赖项

  • Laravel 11.x或更高版本
  • Filament 3.x或更高版本
  • PHP 8.2或更高版本
  • nwidart/laravel-modules 11.x

如果您使用Laravel 10,请使用版本3.x

安装

您可以通过composer安装此包

composer require coolsam/modules:^4

这将自动安装nwidart/laravel-modules: ^11。在继续之前,请确保阅读文档以了解如何使用该包以及如何正确配置。

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="modules-config"

或者,只需运行安装命令并遵循提示

php artisan modules:install

配置

发布配置文件后,您可以按需配置该包。配置文件位于config/filament-modules.php。以下内容可以在配置文件中进行调整

  • auto-register-plugins:如果设置为true,该包将自动注册模块中的所有插件。否则,您需要手动在Filament面板中注册每个插件。
  • clusters.enabled:如果设置为true,在执行module:filament:install命令期间,将在每个模块中创建一个集群,并且该模块的所有filament文件可能都位于该集群中。否则,filament文件将位于Filament/Resources、Filament/Pages、Filament/Widgets等。
  • clusters.use-top-navigation:如果设置为true,将使用顶部导航在集群之间导航,而实际链接将作为侧边子导航加载。在我看来,这提高了用户体验。否则,包将尊重你在面板中的配置。

用法

注册插件

该包包含一个ModulesPlugin,你可以在你的Filament面板中注册。此插件将自动加载你的应用程序中的所有模块并将它们注册为Filament插件。为了实现这一点,你需要像这样在所选面板(例如,管理面板)中注册ModulesPlugin

// e.g. in App\Providers\Filament\AdminPanelProvider.php
 
use Coolsam\Modules\ModulesPlugin;
public function panel(Panel $panel): Panel
{
    return $panel
        ...
        ->plugin(ModulesPlugin::make());
}

就是这样!现在你可以在所选模块中开始创建一些filament代码了!

在模块中安装Filament

如果你还没有模块,可以使用module:make命令创建一个,如下所示

php artisan module:make MyModule

接下来,运行module:filament:install命令以在模块中生成必要的Filament文件和目录

php artisan module:filament:install MyModule

这将交互式地引导你确定是否要在集群中组织你的代码,以及你是否想创建一个默认集群。在安装结束时,你的模块中将有以下结构

  • 模块
    • MyModule
      • app
        • Filament
          • Clusters
            • MyModule
              • Pages
              • Resources
              • Widgets
            • MyModule.php
          • Pages
          • Resources
          • Widgets
          • MyModulePlugin.php

如你所见,生成了两个主要文件:插件类和可选的集群类。生成后,你可以根据需要对这些类进行任何修改。

除非配置另有设置,否则插件将自动加载。因此,它也将自动加载其所有集群。

你的模块现在可以用于Filament面板。在开发过程中,使用以下命令在模块中生成新的资源、页面、小部件和集群

创建新的资源

php artisan module:make:filament-resource

按照交互式提示在你的模块中创建新的资源。

创建新的页面

php artisan module:make:filament-page

按照交互式提示在你的模块中创建新的页面。

###创建新的小部件

php artisan module:make:filament-widget

按照交互式提示在你的模块中创建新的小部件。

创建新的集群

php artisan module:make:filament-cluster

按照交互式提示在你的模块中创建新的集群。

创建新的插件

php artisan module:make:filament-plugin

按照交互式提示在你的模块中创建新的插件。

创建新的Filament主题

php artisan module:make:filament-theme

按照提示和说明在你的模块中创建新的Filament主题并将其注册到你的面板。

测试

composer test

变更日志

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

贡献

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

安全漏洞

请参阅我们的安全策略了解如何报告安全漏洞。

致谢

许可证

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