savannabits / filament-modules
使用nwidart/laravel-modules将Filament代码组织成模块
Requires
- php: ^8.1|^8.2|^8.3
- filament/filament: ^3.0
- nwidart/laravel-modules: ^11.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.1
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.1
- 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
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-08-26 12:15:13 UTC
README
注意:本文档适用于该包的4.x版本,仅支持Laravel 11和nwidart/laravel-modules ^11。如果您使用Laravel 10,请参阅3.x文档。
此包将模块的力量引入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
- MyModule
- Pages
- Resources
- Widgets
- MyModulePlugin.php
- Clusters
- Filament
- app
- MyModule
如你所见,生成了两个主要文件:插件类和可选的集群类。生成后,你可以根据需要对这些类进行任何修改。
除非配置另有设置,否则插件将自动加载。因此,它也将自动加载其所有集群。
你的模块现在可以用于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)。有关更多信息,请参阅许可证文件。