diff --git a/app/Models/CustomFieldset.php b/app/Models/CustomFieldset.php index 4d960ede4..71be28e8a 100644 --- a/app/Models/CustomFieldset.php +++ b/app/Models/CustomFieldset.php @@ -103,6 +103,10 @@ class CustomFieldset extends Model if ($field->element == 'checkbox') { $rules[$field->db_column_name()][] = 'checkboxes'; } + + if ($field->element == 'radio') { + $rules[$field->db_column_name()][] = 'radio_buttons'; + } } return $rules; diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index d13898fb3..803d54086 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -322,6 +322,14 @@ class ValidationServiceProvider extends ServiceProvider return true; }); + + // Validates that a radio button option exists + Validator::extend('radio_buttons', function ($attribute, $value) { + $field = CustomField::where('db_column', $attribute)->first(); + $options = $field->formatFieldValuesAsArray(); + + return in_array($value, $options); + }); } /** diff --git a/resources/lang/en-US/validation.php b/resources/lang/en-US/validation.php index 98084afcd..d027a93f8 100644 --- a/resources/lang/en-US/validation.php +++ b/resources/lang/en-US/validation.php @@ -106,6 +106,7 @@ return [ 'numeric' => 'Value cannot be negative' ], 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /*