diff --git a/src/Forms/Form.php b/src/Forms/Form.php index e2c4ed8751e..168b80b7a4a 100644 --- a/src/Forms/Form.php +++ b/src/Forms/Form.php @@ -1264,17 +1264,26 @@ public function getLegend() */ public function validationResult() { + $result = ValidationResult::create(); + // Automatically pass if there is no validator, or the clicked button is exempt // Note: Soft support here for validation with absent request handler $handler = $this->getRequestHandler(); $action = $handler ? $handler->buttonClicked() : null; - $validator = $this->getValidator(); - if (!$validator || $this->actionIsValidationExempt($action)) { - return ValidationResult::create(); + if ($this->actionIsValidationExempt($action)) { + return $result; + } + + // Invoke FormField validation + foreach ($this->Fields() as $field) { + $result->combineAnd($field->validate()); } // Invoke validator - $result = $validator->validate(); + $validator = $this->getValidator(); + if ($validator) { + $result->combineAnd($validator->validate()); + } $this->loadMessagesFrom($result); return $result; } diff --git a/src/Forms/Validation/RequiredFieldsValidator.php b/src/Forms/Validation/RequiredFieldsValidator.php index 0ff690f3dbe..aeadf8974b9 100644 --- a/src/Forms/Validation/RequiredFieldsValidator.php +++ b/src/Forms/Validation/RequiredFieldsValidator.php @@ -116,12 +116,6 @@ public function php($data) $valid = true; $fields = $this->form->Fields(); - foreach ($fields as $field) { - $result = $field->validate(); - $valid = $result->isValid() && $valid; - $this->result->combineAnd($result); - } - if (!$this->required) { return $valid; }