From e0f38a8c99a46654a2eaf7bb377787b7fee51ad8 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Tue, 14 Jul 2026 10:25:00 +0200 Subject: [PATCH] add interface function to auto fill plugin settings form --- app/Contracts/Plugins/HasPluginSettings.php | 5 +++++ .../Admin/Resources/Plugins/PluginResource.php | 1 + app/Models/Plugin.php | 15 +++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/app/Contracts/Plugins/HasPluginSettings.php b/app/Contracts/Plugins/HasPluginSettings.php index 1ed556c6c..565684467 100644 --- a/app/Contracts/Plugins/HasPluginSettings.php +++ b/app/Contracts/Plugins/HasPluginSettings.php @@ -6,6 +6,11 @@ use Filament\Schemas\Components\Component; interface HasPluginSettings { + /** + * @return array + */ + public function getSettingsFormData(): array; + /** * @return Component[] */ diff --git a/app/Filament/Admin/Resources/Plugins/PluginResource.php b/app/Filament/Admin/Resources/Plugins/PluginResource.php index d78e85b59..d521f344d 100644 --- a/app/Filament/Admin/Resources/Plugins/PluginResource.php +++ b/app/Filament/Admin/Resources/Plugins/PluginResource.php @@ -113,6 +113,7 @@ class PluginResource extends Resource ->color('primary') ->visible(fn (Plugin $plugin) => $plugin->status === PluginStatus::Enabled && $plugin->hasSettings()) ->schema(fn (Plugin $plugin) => $plugin->getSettingsForm()) + ->fillForm(fn (Plugin $plugin) => $plugin->getSettingsFormData()) ->action(fn (array $data, Plugin $plugin) => $plugin->saveSettings($data)) ->slideOver(), ActionGroup::make([ diff --git a/app/Models/Plugin.php b/app/Models/Plugin.php index 9fb15d395..01bad4f70 100644 --- a/app/Models/Plugin.php +++ b/app/Models/Plugin.php @@ -335,6 +335,21 @@ class Plugin extends Model implements HasPluginSettings return false; } + /** @return array */ + public function getSettingsFormData(): array + { + try { + $pluginObject = new ($this->fullClass()); + + if ($pluginObject instanceof HasPluginSettings) { + return $pluginObject->getSettingsFormData(); + } + } catch (Exception) { + } + + return []; + } + /** @return Component[] */ public function getSettingsForm(): array {