mirror of
https://github.com/pelican-dev/panel.git
synced 2026-07-15 21:48:08 +03:00
add interface function to auto fill plugin settings form
This commit is contained in:
@@ -6,6 +6,11 @@ use Filament\Schemas\Components\Component;
|
||||
|
||||
interface HasPluginSettings
|
||||
{
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function getSettingsFormData(): array;
|
||||
|
||||
/**
|
||||
* @return Component[]
|
||||
*/
|
||||
|
||||
@@ -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([
|
||||
|
||||
@@ -335,6 +335,21 @@ class Plugin extends Model implements HasPluginSettings
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @return array<string, mixed> */
|
||||
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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user