diff --git a/app/Classes/FilamentInput.php b/app/Classes/FilamentInput.php index 72b11beb1..a40e58f20 100644 --- a/app/Classes/FilamentInput.php +++ b/app/Classes/FilamentInput.php @@ -98,11 +98,17 @@ class FilamentInput ->hintColor('primary') ->helperText($setting->description ?? ''); - // For required TagsInput, we need to validate the array has at least one item - // Filament's required() alone considers empty arrays as "filled" + // For required TagsInput, validate that array has at least one item + // Standard 'required' rule considers empty arrays as valid if ($setting->required ?? false) { $input->required() - ->rules(['array', 'min:1']); + ->rule(function () { + return function (string $attribute, $value, \Closure $fail) { + if (!is_array($value) || empty($value)) { + $fail('The :attribute field must have at least 1 items.'); + } + }; + }); } return $input; diff --git a/app/Events/Setting/Retrieved.php b/app/Events/Setting/Retrieved.php index 4d7d222f7..74749b32b 100644 --- a/app/Events/Setting/Retrieved.php +++ b/app/Events/Setting/Retrieved.php @@ -29,14 +29,18 @@ class Retrieved switch ($setting->type) { case 'boolean': $setting->value = (bool) $setting->value; + break; case 'integer': $setting->value = (int) $setting->value; + break; case 'float': $setting->value = (float) $setting->value; + break; case 'array': - $setting->value = json_decode($setting->value, true); + $setting->value = json_decode($setting->value, true) ?? []; + break; default: - return; + break; } } }