diff --git a/includes/htmlform/HTMLForm.php b/includes/htmlform/HTMLForm.php
index c61baad8fe3..9eef68cfd17 100644
--- a/includes/htmlform/HTMLForm.php
+++ b/includes/htmlform/HTMLForm.php
@@ -1342,10 +1342,12 @@ class HTMLForm extends ContextSource {
->setInterfaceMessageFlag( true )
->parse();
}
- } elseif ( is_array( $elements ) && $elementsType === 'error' ) {
- $elementstr = $this->formatErrors( $elements );
} elseif ( $elementsType === 'error' ) {
- $elementstr = $elements;
+ if ( is_array( $elements ) ) {
+ $elementstr = $this->formatErrors( $elements );
+ } elseif ( $elements && $elements !== true ) {
+ $elementstr = (string)$elements;
+ }
}
return $elementstr
diff --git a/includes/htmlform/OOUIHTMLForm.php b/includes/htmlform/OOUIHTMLForm.php
index e9993eee220..78f14eb3d6a 100644
--- a/includes/htmlform/OOUIHTMLForm.php
+++ b/includes/htmlform/OOUIHTMLForm.php
@@ -220,21 +220,23 @@ class OOUIHTMLForm extends HTMLForm {
if ( !$elements->isGood() ) {
$errors = $elements->getErrorsByType( $elementsType );
foreach ( $errors as &$error ) {
- // Input: [ 'message' => 'foo', 'errors' => [ 'a', 'b', 'c' ] ]
+ // Input: [ 'message' => 'foo', 'params' => [ 'a', 'b', 'c' ] ]
// Output: [ 'foo', 'a', 'b', 'c' ]
- $error = array_merge( [ $error['message'] ], $error['params'] );
+ $error = $this->getMessage(
+ array_merge( [ $error['message'] ], $error['params'] ) )->parse();
}
}
} elseif ( $elementsType === 'error' ) {
if ( is_array( $elements ) ) {
- $errors = $elements;
- } elseif ( is_string( $elements ) ) {
- $errors = [ $elements ];
+ foreach ( $elements as $error ) {
+ $errors[] = $this->getMessage( $error )->parse();
+ }
+ } elseif ( $elements && $elements !== true ) {
+ $errors[] = (string)$elements;
}
}
foreach ( $errors as &$error ) {
- $error = $this->getMessage( $error )->parse();
$error = new OOUI\HtmlSnippet( $error );
}