# Check for cancelled submission
foreach ( $this->mFlatFields as $fieldname => $field ) {
- if ( !empty( $field->mParams['nodata'] ) ) {
+ if ( !array_key_exists( $fieldname, $this->mFieldData ) ) {
continue;
}
if ( $field->cancelSubmit( $this->mFieldData[$fieldname], $this->mFieldData ) ) {
# Check for validation
foreach ( $this->mFlatFields as $fieldname => $field ) {
- if ( !empty( $field->mParams['nodata'] ) ) {
+ if ( !array_key_exists( $fieldname, $this->mFieldData ) ) {
continue;
}
if ( $field->isHidden( $this->mFieldData ) ) {
];
if ( isset( $button['label-message'] ) ) {
- $label = $this->msg( $button['label-message'] )->parse();
+ $label = $this->getMessage( $button['label-message'] )->parse();
} elseif ( isset( $button['label'] ) ) {
$label = htmlspecialchars( $button['label'] );
} elseif ( isset( $button['label-raw'] ) ) {
$errorstr = '';
foreach ( $errors as $error ) {
- if ( is_array( $error ) ) {
- $msg = array_shift( $error );
- } else {
- $msg = $error;
- $error = [];
- }
-
$errorstr .= Html::rawElement(
'li',
[],
- $this->msg( $msg, $error )->parse()
+ $this->getMessage( $error )->parse()
);
}
/**
* Identify that the submit button in the form has a destructive action
* @since 1.24
+ *
+ * @return HTMLForm $this for chaining calls (since 1.28)
*/
public function setSubmitDestructive() {
$this->mSubmitFlags = [ 'destructive', 'primary' ];
+
+ return $this;
}
/**
* Identify that the submit button in the form has a progressive action
* @since 1.25
+ *
+ * @return HTMLForm $this for chaining calls (since 1.28)
*/
public function setSubmitProgressive() {
$this->mSubmitFlags = [ 'progressive', 'primary' ];
+
+ return $this;
}
/**
* @param string $fieldsetIDPrefix ID prefix for the "<fieldset>" tag of
* each subsection, ignored if empty.
* @param bool &$hasUserVisibleFields Whether the section had user-visible fields.
+ * @throws LogicException When called on uninitialized field data, e.g. When
+ * HTMLForm::displayForm was called without calling HTMLForm::prepareForm
+ * first.
*
* @return string
*/
public function displaySection( $fields,
$sectionName = '',
$fieldsetIDPrefix = '',
- &$hasUserVisibleFields = false ) {
+ &$hasUserVisibleFields = false
+ ) {
+ if ( $this->mFieldData === null ) {
+ throw new LogicException( 'HTMLForm::displaySection() called on uninitialized field data. '
+ . 'You probably called displayForm() without calling prepareForm() first.' );
+ }
+
$displayFormat = $this->getDisplayFormat();
$html = [];
foreach ( $fields as $key => $value ) {
if ( $value instanceof HTMLFormField ) {
- $v = isset( $this->mFieldData[$key] )
+ $v = array_key_exists( $key, $this->mFieldData )
? $this->mFieldData[$key]
: $value->getDefault();
return $this;
}
+
+ /**
+ * Turns a *-message parameter (which could be a MessageSpecifier, or a message name, or a
+ * name + parameters array) into a Message.
+ * @param mixed $value
+ * @return Message
+ */
+ protected function getMessage( $value ) {
+ return Message::newFromSpecifier( $value )->setContext( $this );
+ }
}