diff --git a/src/Forms/TextareaField.php b/src/Forms/TextareaField.php index 0a0f69c98..0ffbc23a1 100644 --- a/src/Forms/TextareaField.php +++ b/src/Forms/TextareaField.php @@ -152,7 +152,6 @@ class TextareaField extends FormField return $attributes; } - /** * {@inheritdoc} */ @@ -167,6 +166,41 @@ class TextareaField extends FormField return $parent; } + /** + * Validate this field + * + * @param Validator $validator + * @return bool + */ + public function validate($validator) + { + if (!is_null($this->maxLength) && mb_strlen($this->value ?? '') > $this->maxLength) { + $name = strip_tags($this->Title() ? $this->Title() : $this->getName()); + $validator->validationError( + $this->name, + _t( + 'SilverStripe\\Forms\\TextField.VALIDATEMAXLENGTH', + 'The value for {name} must not exceed {maxLength} characters in length', + ['name' => $name, 'maxLength' => $this->maxLength] + ), + "validation" + ); + return false; + } + return true; + } + + public function getSchemaValidation() + { + $rules = parent::getSchemaValidation(); + if ($this->getMaxLength()) { + $rules['max'] = [ + 'length' => $this->getMaxLength(), + ]; + } + return $rules; + } + /** * Return value with all values encoded in html entities *