Fix invalid HTMLForm::setValidationErrorMessage doc
authorLucas Werkmeister <lucas.werkmeister@wikimedia.de>
Tue, 19 Mar 2019 14:19:30 +0000 (15:19 +0100)
committerLucas Werkmeister <lucas.werkmeister@wikimedia.de>
Tue, 19 Mar 2019 14:19:30 +0000 (15:19 +0100)
The method has not actually supported scalar or single-level array
arguments for a while now; according to Michael Große, this ability was
lost in Ibb17bb61ac. No one seems to have noticed (indeed, MediaWiki
code search finds no callers at all [1]), so instead of trying to fix
it, let’s just update the documentation.

We can also remove a cast to array in trySubmit(), because if the value
wasn’t already an array, then converting it to a single-element array
and then trying to spread its only element into $hoistedErrors->fatal()
arguments still fails (“only arrays and Traversables can be unpacked”).

[1]: https://codesearch.wmflabs.org/search/?q=setValidationErrorMessage

Change-Id: I8c292ec62ef4aec89217e86a75d7f2e88111f43f

includes/htmlform/HTMLForm.php

index 82cbb40..ee0da7b 100644 (file)
@@ -605,7 +605,7 @@ class HTMLForm extends ContextSource {
                $valid = true;
                $hoistedErrors = Status::newGood();
                if ( $this->mValidationErrorMessage ) {
-                       foreach ( (array)$this->mValidationErrorMessage as $error ) {
+                       foreach ( $this->mValidationErrorMessage as $error ) {
                                $hoistedErrors->fatal( ...$error );
                        }
                } else {
@@ -700,8 +700,8 @@ class HTMLForm extends ContextSource {
        /**
         * Set a message to display on a validation error.
         *
-        * @param string|array $msg String or Array of valid inputs to wfMessage()
-        *     (so each entry can be either a String or Array)
+        * @param array $msg Array of valid inputs to wfMessage()
+        *     (so each entry must itself be an array of arguments)
         *
         * @return HTMLForm $this for chaining calls (since 1.20)
         */