MDL-53140 forms: Implement validateSubmitValue for the group element
authorShamim Rezaie <shamim@moodle.com>
Fri, 1 Feb 2019 08:44:06 +0000 (19:44 +1100)
committerShamim Rezaie <shamim@moodle.com>
Mon, 29 Apr 2019 13:43:11 +0000 (23:43 +1000)
The group element needs to call validateSubmitValue() for all of its
containing elements.

lib/form/group.php

index f4f241f..c8a3935 100644 (file)
@@ -257,4 +257,22 @@ class MoodleQuickForm_group extends HTML_QuickForm_group implements templatable
         }
         $renderer->finishGroup($this);
     }
+
+    /**
+     * Calls the validateSubmitValue function for the containing elements and returns an error string as soon as it finds one.
+     *
+     * @param array $values Values of the containing elements.
+     * @return string|null Validation error message or null.
+     */
+    public function validateSubmitValue($values) {
+        foreach ($this->_elements as $element) {
+            if (method_exists($element, 'validateSubmitValue')) {
+                $value = $values[$element->getName()] ?? null;
+                $result = $element->validateSubmitValue($value);
+                if (!empty($result) && is_string($result)) {
+                    return $result;
+                }
+            }
+        }
+    }
 }