From 1450e8baf293b75e0e081aa62e008fc9ae80bad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Cmit=20Tun=C3=A7?= Date: Mon, 20 Oct 2025 15:19:34 -0300 Subject: [PATCH] Refactor settings form handling: Removed redundant data mutation methods in CreateSetting and EditSetting pages. Updated SettingForm to use distinct fields for text and boolean values, enhancing clarity and functionality. Added new attributes in the Setting model to manage value assignments from different fields. --- .../Settings/Pages/CreateSetting.php | 20 ---------- .../Resources/Settings/Pages/EditSetting.php | 40 ------------------- .../Settings/Schemas/SettingForm.php | 16 +++++++- app/Models/Setting.php | 18 +++++++++ 4 files changed, 32 insertions(+), 62 deletions(-) diff --git a/app/Filament/Admin/Resources/Settings/Pages/CreateSetting.php b/app/Filament/Admin/Resources/Settings/Pages/CreateSetting.php index a97330f..52a8094 100644 --- a/app/Filament/Admin/Resources/Settings/Pages/CreateSetting.php +++ b/app/Filament/Admin/Resources/Settings/Pages/CreateSetting.php @@ -23,24 +23,4 @@ class CreateSetting extends CreateRecord { return __('settings.created_successfully'); } - - protected function mutateFormDataBeforeSave(array $data): array - { - // Boolean değerleri string'e çevir - if (isset($data['type']) && $data['type'] === 'boolean') { - $data['value'] = $data['value'] ? '1' : '0'; - } - - // Integer değerleri string'e çevir - if (isset($data['type']) && $data['type'] === 'integer') { - $data['value'] = (string) $data['value']; - } - - // Float değerleri string'e çevir - if (isset($data['type']) && $data['type'] === 'float') { - $data['value'] = (string) $data['value']; - } - - return $data; - } } diff --git a/app/Filament/Admin/Resources/Settings/Pages/EditSetting.php b/app/Filament/Admin/Resources/Settings/Pages/EditSetting.php index 01bea62..928b25a 100644 --- a/app/Filament/Admin/Resources/Settings/Pages/EditSetting.php +++ b/app/Filament/Admin/Resources/Settings/Pages/EditSetting.php @@ -38,44 +38,4 @@ class EditSetting extends EditRecord { return __('settings.updated_successfully'); } - - protected function mutateFormDataBeforeFill(array $data): array - { - // Boolean tipindeki değerleri cast et - if (isset($data['type']) && $data['type'] === 'boolean') { - $data['value'] = filter_var($data['value'], FILTER_VALIDATE_BOOLEAN); - } - - // Integer tipindeki değerleri cast et - if (isset($data['type']) && $data['type'] === 'integer') { - $data['value'] = (int) $data['value']; - } - - // Float tipindeki değerleri cast et - if (isset($data['type']) && $data['type'] === 'float') { - $data['value'] = (float) $data['value']; - } - - return $data; - } - - protected function mutateFormDataBeforeSave(array $data): array - { - // Boolean değerleri string'e çevir - if (isset($data['type']) && $data['type'] === 'boolean') { - $data['value'] = $data['value'] ? '1' : '0'; - } - - // Integer değerleri string'e çevir - if (isset($data['type']) && $data['type'] === 'integer') { - $data['value'] = (string) $data['value']; - } - - // Float değerleri string'e çevir - if (isset($data['type']) && $data['type'] === 'float') { - $data['value'] = (string) $data['value']; - } - - return $data; - } } diff --git a/app/Filament/Admin/Resources/Settings/Schemas/SettingForm.php b/app/Filament/Admin/Resources/Settings/Schemas/SettingForm.php index 32e1861..6269957 100644 --- a/app/Filament/Admin/Resources/Settings/Schemas/SettingForm.php +++ b/app/Filament/Admin/Resources/Settings/Schemas/SettingForm.php @@ -74,19 +74,31 @@ class SettingForm ]) ->default('general'), - Textarea::make('value') + Textarea::make('value_text') ->label(__('settings.value')) ->helperText(__('settings.value_helper')) ->required() ->visible(fn (Get $get) => !in_array($get('type'), ['boolean'])) ->rows(fn (Get $get) => $get('type') === 'text' ? 5 : 3) + ->formatStateUsing(function ($state, $record) { + if ($record && $record->type !== 'boolean') { + return $record->value; + } + return $state; + }) ->columnSpanFull(), - Toggle::make('value') + Toggle::make('value_boolean') ->label(__('settings.value')) ->helperText(__('settings.value_helper')) ->required() ->visible(fn (Get $get) => $get('type') === 'boolean') + ->formatStateUsing(function ($state, $record) { + if ($record && $record->type === 'boolean') { + return filter_var($record->value, FILTER_VALIDATE_BOOLEAN); + } + return false; + }) ->columnSpanFull(), Toggle::make('is_active') diff --git a/app/Models/Setting.php b/app/Models/Setting.php index a84672b..569bb53 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -13,6 +13,8 @@ class Setting extends Model protected $fillable = [ 'key', 'value', + 'value_text', + 'value_boolean', 'type', 'group', 'label', @@ -32,6 +34,22 @@ class Setting extends Model 'deleted_at', ]; + /** + * Set value from different field names + */ + public function setValueTextAttribute($value) + { + $this->attributes['value'] = $value; + } + + /** + * Set value from different field names + */ + public function setValueBooleanAttribute($value) + { + $this->attributes['value'] = $value ? '1' : '0'; + } + /** * Get setting by key */