Enhance TagsInput validation: ensure at least one item is required for non-empty arrays; improve setting value handling in Retrieved event
This commit is contained in:
@@ -98,11 +98,17 @@ class FilamentInput
|
|||||||
->hintColor('primary')
|
->hintColor('primary')
|
||||||
->helperText($setting->description ?? '');
|
->helperText($setting->description ?? '');
|
||||||
|
|
||||||
// For required TagsInput, we need to validate the array has at least one item
|
// For required TagsInput, validate that array has at least one item
|
||||||
// Filament's required() alone considers empty arrays as "filled"
|
// Standard 'required' rule considers empty arrays as valid
|
||||||
if ($setting->required ?? false) {
|
if ($setting->required ?? false) {
|
||||||
$input->required()
|
$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;
|
return $input;
|
||||||
|
|||||||
@@ -29,14 +29,18 @@ class Retrieved
|
|||||||
switch ($setting->type) {
|
switch ($setting->type) {
|
||||||
case 'boolean':
|
case 'boolean':
|
||||||
$setting->value = (bool) $setting->value;
|
$setting->value = (bool) $setting->value;
|
||||||
|
break;
|
||||||
case 'integer':
|
case 'integer':
|
||||||
$setting->value = (int) $setting->value;
|
$setting->value = (int) $setting->value;
|
||||||
|
break;
|
||||||
case 'float':
|
case 'float':
|
||||||
$setting->value = (float) $setting->value;
|
$setting->value = (float) $setting->value;
|
||||||
|
break;
|
||||||
case 'array':
|
case 'array':
|
||||||
$setting->value = json_decode($setting->value, true);
|
$setting->value = json_decode($setting->value, true) ?? [];
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user