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 */