MediaWiki REL1_32
HTMLForm Class Reference

Object handling generic submission, CSRF protection, layout and other logic for UI forms. More...

Inheritance diagram for HTMLForm:
Collaboration diagram for HTMLForm:

Public Member Functions

 __construct ( $descriptor, $context=null, $messagePrefix='')
 Build a new HTMLForm from an array of field attributes.
 
 addButton ( $data)
 Add a button to the form.
 
 addFooterText ( $msg, $section=null)
 Add footer text, inside the form.
 
 addHeaderText ( $msg, $section=null)
 Add HTML to the header, inside the form.
 
 addHiddenField ( $name, $value, array $attribs=[])
 Add a hidden field to the output.
 
 addHiddenFields (array $fields)
 Add an array of hidden fields to the output.
 
 addPostText ( $msg)
 Add text to the end of the display.
 
 addPreText ( $msg)
 Add HTML to introductory message.
 
 displayForm ( $submitResult)
 Display the form (sending to the context's OutputPage object), with an appropriate error message or stack of messages, and any validation errors, etc.
 
 displaySection ( $fields, $sectionName='', $fieldsetIDPrefix='', &$hasUserVisibleFields=false)
 
 filterDataForSubmit ( $data)
 Overload this if you want to apply special filtration routines to the form as a whole, after it's submitted but before it's processed.
 
 formatErrors ( $errors)
 Format a stack of error messages into a single HTML string.
 
 getAction ()
 Get the value for the action attribute of the form.
 
 getBody ()
 Get the whole body of the form.
 
 getButtons ()
 Get the submit and (potentially) reset buttons.
 
 getDisplayFormat ()
 Getter for displayFormat.
 
 getErrors ( $errors)
 Format and display an error message stack.
 
 getErrorsOrWarnings ( $elements, $elementsType)
 Returns a formatted list of errors or warnings from the given elements.
 
 getField ( $fieldname)
 
 getFooterText ( $section=null)
 Get footer text.
 
 getHeaderText ( $section=null)
 Get header text.
 
 getHiddenFields ()
 Get the hidden fields that should go inside the form.
 
 getHTML ( $submitResult)
 Returns the raw HTML generated by the form.
 
 getLegend ( $key)
 Get a string to go in the "<legend>" of a section fieldset.
 
 getMethod ()
 
 getPreText ()
 Get the introductory message HTML.
 
 getSubmitText ()
 Get the text for the submit button, either customised or a default.
 
 getTitle ()
 Get the title.
 
 hasField ( $fieldname)
 
 loadData ()
 Construct the form fields from the Descriptor array.
 
 needsJSForHtml5FormValidation ()
 Whether this form, with its current fields, requires the user agent to have JavaScript enabled for the client-side HTML5 form validation to work correctly.
 
 prepareForm ()
 Prepare form for submission.
 
 setAction ( $action)
 Set the value for the action attribute of the form.
 
 setAutocomplete ( $autocomplete)
 Set the value for the autocomplete attribute of the form.
 
 setCancelTarget ( $target)
 Sets the target where the user is redirected to after clicking cancel.
 
 setDisplayFormat ( $format)
 Set format in which to display the form.
 
 setFooterText ( $msg, $section=null)
 Set footer text, inside the form.
 
 setFormIdentifier ( $ident)
 Set an internal identifier for this form.
 
 setHeaderText ( $msg, $section=null)
 Set header text, inside the form.
 
 setId ( $id)
 
 setIntro ( $msg)
 Set the introductory message, overwriting any existing message.
 
 setMessagePrefix ( $p)
 Set the prefix for various default messages.
 
 setMethod ( $method='post')
 Set the method used to submit the form.
 
 setName ( $name)
 
 setPostText ( $msg)
 Set text at the end of the display.
 
 setPreText ( $msg)
 Set the introductory message HTML, overwriting any existing message.
 
 setSubmitCallback ( $cb)
 Set a callback to a function to do something with the form once it's been successfully validated.
 
 setSubmitDestructive ()
 Identify that the submit button in the form has a destructive action.
 
 setSubmitID ( $t)
 Set the id for the submit button.
 
 setSubmitName ( $name)
 
 setSubmitProgressive ()
 Identify that the submit button in the form has a progressive action.
 
 setSubmitText ( $t)
 Set the text for the submit button.
 
 setSubmitTextMsg ( $msg)
 Set the text for the submit button to a message.
 
 setSubmitTooltip ( $name)
 
 setTableId ( $id)
 Set the id of the \<table\> or outermost \<div\> element.
 
 setTitle ( $t)
 Set the title for form submission.
 
 setTokenSalt ( $salt)
 Set the salt for the edit token.
 
 setValidationErrorMessage ( $msg)
 Set a message to display on a validation error.
 
 setWrapperLegend ( $legend)
 Prompt the whole form to be wrapped in a "<fieldset>", with this text as its "<legend>" element.
 
 setWrapperLegendMsg ( $msg)
 Prompt the whole form to be wrapped in a "<fieldset>", with this message as its "<legend>" element.
 
 show ()
 The here's-one-I-made-earlier option: do the submission if posted, or display the form with or without funky validation errors.
 
 showAlways ()
 Same as self::show with the difference, that the form will be added to the output, no matter, if the validation was good or not.
 
 showCancel ( $show=true)
 Show a cancel button (or prevent it).
 
 suppressDefaultSubmit ( $suppressSubmit=true)
 Stop a default submit button being shown for this form.
 
 suppressReset ( $suppressReset=true)
 Stop a reset button being shown for this form.
 
 tryAuthorizedSubmit ()
 Try submitting, with edit token check first.
 
 trySubmit ()
 Validate all the fields, and call the submission callback function if everything is kosher.
 
 wasSubmitted ()
 Test whether the form was considered to have been submitted or not, i.e.
 
 wrapForm ( $html)
 Wrap the form innards in an actual "<form>" element.
 
- Public Member Functions inherited from ContextSource
 canUseWikiPage ()
 Check whether a WikiPage object can be get with getWikiPage().
 
 exportSession ()
 Export the resolved user IP, HTTP headers, user ID, and session ID.
 
 getConfig ()
 
 getContext ()
 Get the base IContextSource object.
 
 getLanguage ()
 
 getOutput ()
 
 getRequest ()
 
 getSkin ()
 
 getStats ()
 
 getTiming ()
 
 getUser ()
 
 getWikiPage ()
 Get the WikiPage object.
 
 msg ( $key)
 Get a Message object with context set Parameters are the same as wfMessage()
 
 setContext (IContextSource $context)
 

Static Public Member Functions

static factory ( $displayFormat)
 Construct a HTMLForm object for given display type.
 
static getClassFromDescriptor ( $fieldname, &$descriptor)
 Get the HTMLFormField subclass for this descriptor.
 
static loadInputFromParameters ( $fieldname, $descriptor, HTMLForm $parent=null)
 Initialise a new Object for the field.
 

Public Attributes

 $mFieldData
 

Static Public Attributes

static $typeMappings
 

Protected Member Functions

 formatSection (array $fieldsHtml, $sectionName, $anyFieldHasLabel)
 Put a form section together from the individual fields' HTML, merging it and wrapping.
 
 getFormAttributes ()
 Get HTML attributes for the <form> tag.
 
 getMessage ( $value)
 Turns a *-message parameter (which could be a MessageSpecifier, or a message name, or a name + parameters array) into a Message.
 
 wrapFieldSetSection ( $legend, $section, $attributes, $isRoot)
 Wraps the given $section into an user-visible fieldset.
 

Protected Attributes

array $availableDisplayFormats
 Available formats in which to display the form.
 
array $availableSubclassDisplayFormats
 Available formats in which to display the form.
 
string $displayFormat = 'table'
 Format in which to display form.
 
bool string $mAction = false
 Form action URL.
 
string null $mAutocomplete = null
 Form attribute autocomplete.
 
 $mButtons = []
 
 $mCancelTarget
 
 $mFieldTree
 
HTMLFormField[] $mFlatFields
 
 $mFooter = ''
 
 $mFormIdentifier
 
 $mHeader = ''
 
 $mHiddenFields = []
 
 $mId
 
 $mMessagePrefix
 
 $mMethod = 'post'
 
 $mName
 
 $mPost = ''
 
 $mPre = ''
 
 $mSectionFooters = []
 
 $mSectionHeaders = []
 
 $mShowCancel = false
 
 $mShowReset = false
 
 $mShowSubmit = true
 
 $mSubmitCallback
 
 $mSubmitFlags = [ 'primary', 'progressive' ]
 
 $mSubmitID
 
 $mSubmitName
 
 $mSubmitText
 
 $mSubmitTooltip
 
 $mSubSectionBeforeFields = true
 If true, sections that contain both fields and subsections will render their subsections before their fields.
 
 $mTableId = ''
 
 $mTitle
 
string array $mTokenSalt = ''
 Salt for the edit token.
 
 $mUseMultipart = false
 
 $mValidationErrorMessage
 
 $mWasSubmitted = false
 
 $mWrapperLegend = false
 

Detailed Description

Object handling generic submission, CSRF protection, layout and other logic for UI forms.

in a reusable manner.

In order to generate the form, the HTMLForm object takes an array structure detailing the form fields available. Each element of the array is a basic property-list, including the type of field, the label it is to be given in the form, callbacks for validation and 'filtering', and other pertinent information.

Field types are implemented as subclasses of the generic HTMLFormField object, and typically implement at least getInputHTML, which generates the HTML for the input field to be placed in the table.

You can find extensive documentation on the www.mediawiki.org wiki:

The constructor input is an associative array of $fieldname => $info, where $info is an Associative Array with any of the following:

'class' – the subclass of HTMLFormField that will be used to create the object. NOT the CSS class! 'type' – roughly translates into the <select> type attribute. if 'class' is not specified, this is used as a map through HTMLForm::$typeMappings to get the class name. 'default' – default value when the form is displayed 'nodata' – if set (to any value, which casts to true), the data for this field will not be loaded from the actual request. Instead, always the default data is set as the value of this field. 'id' – HTML id attribute 'cssclass' – CSS class 'csshelpclass' – CSS class used to style help text 'dir' – Direction of the element. 'options' – associative array mapping raw text labels to values. Some field types support multi-level arrays. Overwrites 'options-message'. 'options-messages' – associative array mapping message keys to values. Some field types support multi-level arrays. Overwrites 'options' and 'options-message'. 'options-message' – message key or object to be parsed to extract the list of options (like 'ipbreason-dropdown'). 'label-message' – message key or object for a message to use as the label. can be an array of msg key and then parameters to the message. 'label' – alternatively, a raw text message. Overridden by label-message 'help' – message text for a message to use as a help text. 'help-message' – message key or object for a message to use as a help text. can be an array of msg key and then parameters to the message. Overwrites 'help-messages' and 'help'. 'help-messages' – array of message keys/objects. As above, each item can be an array of msg key and then parameters. Overwrites 'help'. 'help-inline' – Whether help text (defined using options above) will be shown inline after the input field, rather than in a popup. Defaults to true. Only used by OOUI form fields. 'notice' – (deprecated, use 'help' instead) 'notice-messages' – (deprecated, use 'help-messages' instead) 'notice-message' – (deprecated, use 'help-message' instead) 'required' – passed through to the object, indicating that it is a required field. 'size' – the length of text fields 'filter-callback' – a function name to give you the chance to massage the inputted value before it's processed.

See also
HTMLFormField::filter() 'validation-callback' – a function name to give you the chance to impose extra validation on the field input.
HTMLFormField::validate() 'name' – By default, the 'name' attribute of the input field is "wp{$fieldname}". If you want a different name (eg one without the "wp" prefix), specify it here and it will be used without modification. 'hide-if' – expression given as an array stating when the field should be hidden. The first array value has to be the expression's logic operator. Supported expressions: 'NOT' [ 'NOT', array $expression ] To hide a field if a given expression is not true. '===' [ '===', string $fieldName, string $value ] To hide a field if another field identified by $field has the value $value. '!==' [ '!==', string $fieldName, string $value ] Same as [ 'NOT', [ '===', $fieldName, $value ] 'OR', 'AND', 'NOR', 'NAND' [ 'XXX', array $expression1, ..., array $expressionN ] To hide a field if one or more (OR), all (AND), neither (NOR) or not all (NAND) given expressions are evaluated as true. The expressions will be given to a JavaScript frontend module which will continually update the field's visibility.

Since 1.20, you can chain mutators to ease the form generation:

Example:
$form = new HTMLForm( $someFields );
$form->setMethod( 'get' )
->setWrapperLegendMsg( 'message-key' )
->prepareForm()
->displayForm( '' );
Object handling generic submission, CSRF protection, layout and other logic for UI forms.
Definition HTMLForm.php:136
Note that you will have prepareForm and displayForm at the end. Other methods call done after that would simply not be part of the form :(
Todo:
Document 'section' / 'subsection' stuff

Definition at line 136 of file HTMLForm.php.

Constructor & Destructor Documentation

◆ __construct()

HTMLForm::__construct (   $descriptor,
  $context = null,
  $messagePrefix = '' 
)

Build a new HTMLForm from an array of field attributes.

Parameters
array$descriptorArray of Field constructs, as described above
IContextSource | null$contextAvailable since 1.18, will become compulsory in 1.18. Obviates the need to call $form->setTitle()
string$messagePrefixA prefix to go in front of default messages

Reimplemented in OOUIHTMLForm.

Definition at line 311 of file HTMLForm.php.

References $context, $section, as, ContextSource\getConfig(), and ContextSource\setContext().

Member Function Documentation

◆ addButton()

HTMLForm::addButton (   $data)

Add a button to the form.

Since
1.27 takes an array as shown. Earlier versions accepted 'name', 'value', 'id', and 'attribs' as separate parameters in that order.
Note
Custom labels ('label', 'label-message', 'label-raw') are not supported for IE6 and IE7 due to bugs in those browsers. If detected, they will be served buttons using 'value' as the button label.
Parameters
array$dataData to define the button:
  • name: (string) Button name.
  • value: (string) Button value.
  • label-message: (string, optional) Button label message key to use instead of 'value'. Overrides 'label' and 'label-raw'.
  • label: (string, optional) Button label text to use instead of 'value'. Overrides 'label-raw'.
  • label-raw: (string, optional) Button label HTML to use instead of 'value'.
  • id: (string, optional) DOM id for the button.
  • attribs: (array, optional) Additional HTML attributes.
  • flags: (string|string[], optional) OOUI flags.
  • framed: (boolean=true, optional) OOUI framed attribute.
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 963 of file HTMLForm.php.

References $args.

Referenced by McrUndoAction\alterForm(), and SpecialBotPasswords\alterForm().

◆ addFooterText()

HTMLForm::addFooterText (   $msg,
  $section = null 
)

Add footer text, inside the form.

Parameters
string$msgComplete text of message to display
string | null$sectionThe section to add the footer text to
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 832 of file HTMLForm.php.

References $section.

Referenced by UploadForm\__construct().

◆ addHeaderText()

HTMLForm::addHeaderText (   $msg,
  $section = null 
)

Add HTML to the header, inside the form.

Parameters
string$msgAdditional HTML to display in header
string | null$sectionThe section to add the header to
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 777 of file HTMLForm.php.

References $section.

Referenced by SpecialBlock\alterForm(), SpecialChangeEmail\alterForm(), and UploadForm\getDescriptionSection().

◆ addHiddenField()

HTMLForm::addHiddenField (   $name,
  $value,
array  $attribs = [] 
)

Add a hidden field to the output.

Parameters
string$nameField name. This will be used exactly as entered
string$valueField value
array$attribs
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 914 of file HTMLForm.php.

References $attribs, $name, and $value.

Referenced by McrRestoreAction\addStatePropagationFields(), McrUndoAction\addStatePropagationFields(), MarkpatrolledAction\alterForm(), and RevertAction\alterForm().

◆ addHiddenFields()

HTMLForm::addHiddenFields ( array  $fields)

Add an array of hidden fields to the output.

Since
1.22
Parameters
array$fieldsAssociative array of fields to add; mapping names to their values
Returns
HTMLForm $this for chaining calls

Definition at line 931 of file HTMLForm.php.

References $name, $value, and as.

Referenced by SpecialChangeEmail\alterForm(), and SpecialPasswordReset\alterForm().

◆ addPostText()

HTMLForm::addPostText (   $msg)

Add text to the end of the display.

Parameters
string$msgComplete text of message to display
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 886 of file HTMLForm.php.

◆ addPreText()

HTMLForm::addPreText (   $msg)

Add HTML to introductory message.

Parameters
string$msgComplete HTML of message to display
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 752 of file HTMLForm.php.

Referenced by SpecialBotPasswords\alterForm().

◆ displayForm()

HTMLForm::displayForm (   $submitResult)

Display the form (sending to the context's OutputPage object), with an appropriate error message or stack of messages, and any validation errors, etc.

Warning
You should call prepareForm() before calling this function. Moreover, when doing method chaining this should be the very last method call just after prepareForm().
Parameters
bool | string | array | Status$submitResultOutput from HTMLForm::trySubmit()
Returns
void Nothing, should be last call

Definition at line 1022 of file HTMLForm.php.

References getHTML(), and ContextSource\getOutput().

Referenced by show(), and showAlways().

◆ displaySection()

HTMLForm::displaySection (   $fields,
  $sectionName = '',
  $fieldsetIDPrefix = '',
$hasUserVisibleFields = false 
)
Todo:
Document
Parameters
array[] | HTMLFormField[]$fieldsArray of fields (either arrays or objects).
string$sectionNameID attribute of the "<table>" tag for this section, ignored if empty.
string$fieldsetIDPrefixID prefix for the "<fieldset>" tag of each subsection, ignored if empty.
bool&$hasUserVisibleFieldsWhether the section had user-visible fields.
Exceptions
LogicExceptionWhen called on uninitialized field data, e.g. When HTMLForm::displayForm was called without calling HTMLForm::prepareForm first.
Returns
string

Reimplemented in EditWatchlistNormalHTMLForm.

Definition at line 1646 of file HTMLForm.php.

References $html, $retval, $section, $value, as, displaySection(), formatSection(), getDisplayFormat(), getFooterText(), getHeaderText(), getLegend(), and wrapFieldSetSection().

Referenced by displaySection(), getBody(), and PreferencesFormOOUI\getBody().

◆ factory()

static HTMLForm::factory (   $displayFormat)
static

Construct a HTMLForm object for given display type.

May return a HTMLForm subclass.

Parameters
string$displayFormat
mixed$arguments,...Additional arguments to pass to the constructor.
Returns
HTMLForm

Definition at line 286 of file HTMLForm.php.

◆ filterDataForSubmit()

HTMLForm::filterDataForSubmit (   $data)

Overload this if you want to apply special filtration routines to the form as a whole, after it's submitted but before it's processed.

Parameters
array$data
Returns
array

Reimplemented in PreferencesFormOOUI.

Definition at line 1826 of file HTMLForm.php.

Referenced by trySubmit().

◆ formatErrors()

HTMLForm::formatErrors (   $errors)

Format a stack of error messages into a single HTML string.

Parameters
array$errorsArray of message keys/values
Returns
string HTML, a "<ul>" list of errors

Definition at line 1312 of file HTMLForm.php.

References as, and getMessage().

Referenced by SpecialBlock\alterForm(), and getErrorsOrWarnings().

◆ formatSection()

HTMLForm::formatSection ( array  $fieldsHtml,
  $sectionName,
  $anyFieldHasLabel 
)
protected

Put a form section together from the individual fields' HTML, merging it and wrapping.

Parameters
array$fieldsHtml
string$sectionName
bool$anyFieldHasLabel
Returns
string HTML

Reimplemented in OOUIHTMLForm.

Definition at line 1739 of file HTMLForm.php.

References $attribs, $html, and getDisplayFormat().

Referenced by displaySection().

◆ getAction()

HTMLForm::getAction ( )

Get the value for the action attribute of the form.

Since
1.22
Returns
string

Definition at line 1865 of file HTMLForm.php.

References ContextSource\getConfig(), getMethod(), getTitle(), and wfScript().

Referenced by getFormAttributes().

◆ getBody()

HTMLForm::getBody ( )

Get the whole body of the form.

Returns
string

Reimplemented in OOUIHTMLForm, and PreferencesFormOOUI.

Definition at line 1253 of file HTMLForm.php.

References displaySection().

Referenced by getHTML().

◆ getButtons()

HTMLForm::getButtons ( )

Get the submit and (potentially) reset buttons.

Returns
string HTML.

Reimplemented in OOUIHTMLForm, VFormHTMLForm, and PreferencesFormOOUI.

Definition at line 1144 of file HTMLForm.php.

References $attribs, array(), as, ContextSource\getConfig(), getMessage(), ContextSource\getRequest(), getSubmitText(), ContextSource\msg(), text, and Linker\tooltipAndAccesskeyAttribs().

Referenced by getHTML().

◆ getClassFromDescriptor()

static HTMLForm::getClassFromDescriptor (   $fieldname,
$descriptor 
)
static

Get the HTMLFormField subclass for this descriptor.

The descriptor can be passed either 'class' which is the name of a HTMLFormField subclass, or a shorter 'type' which is an alias. This makes sure the 'class' is always set, and also is returned by this function for ease.

Since
1.23
Parameters
string$fieldnameName of the field
array&$descriptorInput Descriptor, as described above
Exceptions
MWException
Returns
string Name of a HTMLFormField subclass

Definition at line 454 of file HTMLForm.php.

◆ getDisplayFormat()

HTMLForm::getDisplayFormat ( )

Getter for displayFormat.

Since
1.20
Returns
string

Definition at line 434 of file HTMLForm.php.

Referenced by displaySection(), formatSection(), and HTMLCheckField\getLabel().

◆ getErrors()

HTMLForm::getErrors (   $errors)

Format and display an error message stack.

Parameters
string | array | Status$errors
Deprecated:
since 1.28, use getErrorsOrWarnings() instead
Returns
string

Definition at line 1266 of file HTMLForm.php.

References getErrorsOrWarnings(), and wfDeprecated().

◆ getErrorsOrWarnings()

HTMLForm::getErrorsOrWarnings (   $elements,
  $elementsType 
)

Returns a formatted list of errors or warnings from the given elements.

Parameters
string | array | Status$elementsThe set of errors/warnings to process.
string$elementsTypeShould warnings or errors be returned. This is meant for Status objects, all other valid types are always considered as errors.
Returns
string

Reimplemented in OOUIHTMLForm.

Definition at line 1279 of file HTMLForm.php.

References formatErrors(), ContextSource\getOutput(), and list.

Referenced by getErrors(), and getHTML().

◆ getField()

HTMLForm::getField (   $fieldname)
Parameters
string$fieldname
Returns
HTMLFormField
Exceptions
DomainExceptionon invalid field name

Definition at line 382 of file HTMLForm.php.

References hasField().

◆ getFooterText()

HTMLForm::getFooterText (   $section = null)

Get footer text.

Parameters
string | null$sectionThe section to get the footer text for
Since
1.26
Returns
string

Definition at line 871 of file HTMLForm.php.

References $section.

Referenced by displaySection(), and getHTML().

◆ getFormAttributes()

HTMLForm::getFormAttributes ( )
protected

Get HTML attributes for the <form> tag.

Returns
array

Reimplemented in VFormHTMLForm.

Definition at line 1058 of file HTMLForm.php.

References $attribs, getAction(), getMethod(), and needsJSForHtml5FormValidation().

Referenced by wrapForm(), and OOUIHTMLForm\wrapForm().

◆ getHeaderText()

HTMLForm::getHeaderText (   $section = null)

Get header text.

Parameters
string | null$sectionThe section to get the header text for
Since
1.26
Returns
string HTML

Reimplemented in OOUIHTMLForm.

Definition at line 816 of file HTMLForm.php.

References $section.

Referenced by displaySection(), and getHTML().

◆ getHiddenFields()

HTMLForm::getHiddenFields ( )

Get the hidden fields that should go inside the form.

Returns
string HTML.

Definition at line 1110 of file HTMLForm.php.

References $attribs, $html, $value, as, ContextSource\getConfig(), getMethod(), getTitle(), ContextSource\getUser(), and list.

Referenced by getHTML().

◆ getHTML()

HTMLForm::getHTML (   $submitResult)

Returns the raw HTML generated by the form.

Parameters
bool | string | array | Status$submitResultOutput from HTMLForm::trySubmit()
Returns
string HTML
-taint escaped

Reimplemented in VFormHTMLForm.

Definition at line 1034 of file HTMLForm.php.

References $html, getBody(), getButtons(), getErrorsOrWarnings(), getFooterText(), getHeaderText(), getHiddenFields(), ContextSource\getOutput(), and wrapForm().

Referenced by displayForm().

◆ getLegend()

HTMLForm::getLegend (   $key)

Get a string to go in the "<legend>" of a section fieldset.

Override this if you want something more complicated.

Parameters
string$key
Returns
string Plain text (not HTML-escaped)

Reimplemented in PreferencesFormOOUI, and EditWatchlistNormalHTMLForm.

Definition at line 1838 of file HTMLForm.php.

References ContextSource\msg().

Referenced by displaySection().

◆ getMessage()

HTMLForm::getMessage (   $value)
protected

Turns a *-message parameter (which could be a MessageSpecifier, or a message name, or a name + parameters array) into a Message.

Parameters
mixed$value
Returns
Message

Definition at line 1906 of file HTMLForm.php.

References $value.

Referenced by formatErrors(), getButtons(), OOUIHTMLForm\getButtons(), and OOUIHTMLForm\getErrorsOrWarnings().

◆ getMethod()

HTMLForm::getMethod ( )
Returns
string Always lowercase

Definition at line 1613 of file HTMLForm.php.

Referenced by getAction(), getFormAttributes(), getHiddenFields(), and tryAuthorizedSubmit().

◆ getPreText()

HTMLForm::getPreText ( )

Get the introductory message HTML.

Since
1.32
Returns
string

Definition at line 765 of file HTMLForm.php.

◆ getSubmitText()

HTMLForm::getSubmitText ( )

Get the text for the submit button, either customised or a default.

Returns
string

Definition at line 1389 of file HTMLForm.php.

References ContextSource\msg().

Referenced by getButtons(), OOUIHTMLForm\getButtons(), and VFormHTMLForm\getButtons().

◆ getTitle()

HTMLForm::getTitle ( )

◆ hasField()

HTMLForm::hasField (   $fieldname)
Parameters
string$fieldname
Returns
bool

Definition at line 373 of file HTMLForm.php.

Referenced by getField().

◆ loadData()

HTMLForm::loadData ( )

Construct the form fields from the Descriptor array.

Definition at line 1781 of file HTMLForm.php.

References $name, $request, $value, as, and ContextSource\getRequest().

Referenced by prepareForm().

◆ loadInputFromParameters()

static HTMLForm::loadInputFromParameters (   $fieldname,
  $descriptor,
HTMLForm  $parent = null 
)
static

Initialise a new Object for the field.

Parameters
string$fieldnameName of the field
array$descriptorInput Descriptor, as described above
HTMLForm | null$parentParent instance of HTMLForm
Exceptions
MWException
Returns
HTMLFormField Instance of a subclass of HTMLFormField

Reimplemented in OOUIHTMLForm, and VFormHTMLForm.

Definition at line 482 of file HTMLForm.php.

References $parent.

◆ needsJSForHtml5FormValidation()

HTMLForm::needsJSForHtml5FormValidation ( )

Whether this form, with its current fields, requires the user agent to have JavaScript enabled for the client-side HTML5 form validation to work correctly.

If this function returns true, a 'novalidate' attribute will be added on the <form> element. It will be removed if the user agent has JavaScript support, in htmlform.js.

Returns
bool
Since
1.29

Definition at line 1919 of file HTMLForm.php.

References as.

Referenced by getFormAttributes().

◆ prepareForm()

HTMLForm::prepareForm ( )

Prepare form for submission.

Warning
When doing method chaining, that should be the very last method call before displayForm().
Exceptions
MWException
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 507 of file HTMLForm.php.

References ContextSource\getRequest(), and loadData().

Referenced by show(), and showAlways().

◆ setAction()

HTMLForm::setAction (   $action)

Set the value for the action attribute of the form.

When set to false (which is the default state), the set title is used.

Since
1.19
Parameters
string | bool$action
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1852 of file HTMLForm.php.

◆ setAutocomplete()

HTMLForm::setAutocomplete (   $autocomplete)

Set the value for the autocomplete attribute of the form.

A typical value is "off". When set to null (which is the default state), the attribute get not set.

Since
1.27
Parameters
string | null$autocomplete
Returns
HTMLForm $this for chaining calls

Definition at line 1894 of file HTMLForm.php.

◆ setCancelTarget()

HTMLForm::setCancelTarget (   $target)

Sets the target where the user is redirected to after clicking cancel.

Parameters
Title | string$targetTarget as a Title object or an URL
Returns
HTMLForm $this for chaining calls
Since
1.27

Definition at line 1483 of file HTMLForm.php.

Referenced by McrUndoAction\alterForm().

◆ setDisplayFormat()

HTMLForm::setDisplayFormat (   $format)

Set format in which to display the form.

Parameters
string$formatThe name of the format to use, must be one of $this->availableDisplayFormats
Exceptions
MWException
Since
1.20
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 399 of file HTMLForm.php.

References ContextSource\getConfig().

◆ setFooterText()

HTMLForm::setFooterText (   $msg,
  $section = null 
)

Set footer text, inside the form.

Since
1.19
Parameters
string$msgComplete text of message to display
string | null$sectionThe section to add the footer text to
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 854 of file HTMLForm.php.

References $section.

◆ setFormIdentifier()

HTMLForm::setFormIdentifier (   $ident)

Set an internal identifier for this form.

It will be submitted as a hidden form field, allowing HTMLForm to determine whether the form was submitted (or merely viewed). Setting this serves two purposes:

  • If you use two or more forms on one page, it allows HTMLForm to identify which of the forms was submitted, and not attempt to validate the other ones.
  • If you use checkbox or multiselect fields inside a form using the GET method, it allows HTMLForm to distinguish between the initial page view and a form submission with all checkboxes or select options unchecked.
Since
1.28
Parameters
string$ident
Returns
$this

Definition at line 1444 of file HTMLForm.php.

◆ setHeaderText()

HTMLForm::setHeaderText (   $msg,
  $section = null 
)

Set header text, inside the form.

Since
1.19
Parameters
string$msgComplete HTML of header to display
string | null$sectionThe section to add the header to
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 799 of file HTMLForm.php.

References $section.

Referenced by SpecialBlock\alterForm(), and SpecialPasswordReset\alterForm().

◆ setId()

HTMLForm::setId (   $id)
Parameters
string$idDOM id for the form
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1508 of file HTMLForm.php.

Referenced by UploadForm\__construct(), McrUndoAction\alterForm(), SpecialBotPasswords\alterForm(), and SpecialChangeEmail\alterForm().

◆ setIntro()

HTMLForm::setIntro (   $msg)

Set the introductory message, overwriting any existing message.

Parameters
string$msgComplete text of message to display
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 725 of file HTMLForm.php.

References setPreText().

◆ setMessagePrefix()

HTMLForm::setMessagePrefix (   $p)

Set the prefix for various default messages.

Todo:
Currently only used for the "<fieldset>" legend on forms with multiple sections; should be used elsewhere?
Parameters
string$p
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1568 of file HTMLForm.php.

◆ setMethod()

HTMLForm::setMethod (   $method = 'post')

Set the method used to submit the form.

Parameters
string$method
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1604 of file HTMLForm.php.

Referenced by SpecialChangeContentModel\alterForm(), and SpecialRedirect\alterForm().

◆ setName()

HTMLForm::setName (   $name)
Parameters
string$name'name' attribute for the form
Returns
HTMLForm $this for chaining calls

Definition at line 1518 of file HTMLForm.php.

References $name.

◆ setPostText()

HTMLForm::setPostText (   $msg)

Set text at the end of the display.

Parameters
string$msgComplete text of message to display
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 899 of file HTMLForm.php.

◆ setPreText()

HTMLForm::setPreText (   $msg)

Set the introductory message HTML, overwriting any existing message.

Since
1.19
Parameters
string$msgComplete HTML of message to display
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 739 of file HTMLForm.php.

Referenced by setIntro().

◆ setSubmitCallback()

HTMLForm::setSubmitCallback (   $cb)

Set a callback to a function to do something with the form once it's been successfully validated.

Parameters
callable$cbThe function will be passed the output from HTMLForm::filterDataForSubmit and this HTMLForm object, and must return as documented for HTMLForm::trySubmit
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 698 of file HTMLForm.php.

◆ setSubmitDestructive()

HTMLForm::setSubmitDestructive ( )

Identify that the submit button in the form has a destructive action.

Since
1.24
Returns
HTMLForm $this for chaining calls (since 1.28)

Definition at line 1347 of file HTMLForm.php.

Referenced by SpecialBlock\alterForm(), SpecialPasswordReset\alterForm(), and SpecialResetTokens\alterForm().

◆ setSubmitID()

HTMLForm::setSubmitID (   $t)

Set the id for the submit button.

Parameters
string$t
Todo:
FIXME: Integrity of $t is not validated
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1423 of file HTMLForm.php.

References $t.

◆ setSubmitName()

HTMLForm::setSubmitName (   $name)
Parameters
string$nameSubmit button name
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1398 of file HTMLForm.php.

References $name.

Referenced by UploadForm\__construct(), and McrUndoAction\alterForm().

◆ setSubmitProgressive()

HTMLForm::setSubmitProgressive ( )

Identify that the submit button in the form has a progressive action.

Since
1.25
Deprecated:
since 1.32, No need to call. Submit button already has a progressive action form.
Returns
HTMLForm $this for chaining calls (since 1.28)

Definition at line 1361 of file HTMLForm.php.

References wfDeprecated().

◆ setSubmitText()

HTMLForm::setSubmitText (   $t)

Set the text for the submit button.

Parameters
string$tPlaintext
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1335 of file HTMLForm.php.

References $t.

Referenced by UploadForm\__construct(), and setSubmitTextMsg().

◆ setSubmitTextMsg()

◆ setSubmitTooltip()

HTMLForm::setSubmitTooltip (   $name)
Parameters
string$nameTooltip for the submit button
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1409 of file HTMLForm.php.

References $name.

Referenced by UploadForm\__construct(), and McrUndoAction\alterForm().

◆ setTableId()

HTMLForm::setTableId (   $id)

Set the id of the \<table\> or outermost \<div\> element.

Since
1.22
Parameters
string$idNew value of the id attribute, or "" to remove
Returns
HTMLForm $this for chaining calls

Definition at line 1497 of file HTMLForm.php.

Referenced by SpecialBotPasswords\alterForm(), and SpecialChangeEmail\alterForm().

◆ setTitle()

HTMLForm::setTitle (   $t)

Set the title for form submission.

Parameters
Title$tTitle of page the form is on/should be posted to
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1581 of file HTMLForm.php.

References $t.

◆ setTokenSalt()

HTMLForm::setTokenSalt (   $salt)

Set the salt for the edit token.

Only useful when the method is "post".

Since
1.24
Parameters
string | array$saltSalt to use
Returns
HTMLForm $this For chaining calls

Definition at line 1004 of file HTMLForm.php.

Referenced by MarkpatrolledAction\alterForm(), RevertAction\alterForm(), and WatchAction\alterForm().

◆ setValidationErrorMessage()

HTMLForm::setValidationErrorMessage (   $msg)

Set a message to display on a validation error.

Parameters
string | array$msgString or Array of valid inputs to wfMessage() (so each entry can be either a String or Array)
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 712 of file HTMLForm.php.

◆ setWrapperLegend()

HTMLForm::setWrapperLegend (   $legend)

Prompt the whole form to be wrapped in a "<fieldset>", with this text as its "<legend>" element.

Parameters
string | bool$legendIf false, no wrapper or legend will be displayed. If true, a wrapper will be displayed, but no legend. If a string, a wrapper will be displayed with that string as a legend. The string will be escaped before being output (this doesn't support HTML).
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1535 of file HTMLForm.php.

Referenced by SpecialLockdb\alterForm(), SpecialUnlockdb\alterForm(), and setWrapperLegendMsg().

◆ setWrapperLegendMsg()

HTMLForm::setWrapperLegendMsg (   $msg)

Prompt the whole form to be wrapped in a "<fieldset>", with this message as its "<legend>" element.

Since
1.19
Parameters
string | Message$msgMessage key or Message object
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1550 of file HTMLForm.php.

References ContextSource\msg(), and setWrapperLegend().

Referenced by McrRestoreAction\alterForm(), McrUndoAction\alterForm(), PurgeAction\alterForm(), RevertAction\alterForm(), UnwatchAction\alterForm(), WatchAction\alterForm(), and SpecialBotPasswords\alterForm().

◆ show()

HTMLForm::show ( )

The here's-one-I-made-earlier option: do the submission if posted, or display the form with or without funky validation errors.

Returns
bool|Status Whether submission was successful.

Reimplemented in UploadForm.

Definition at line 569 of file HTMLForm.php.

References displayForm(), StatusValue\isGood(), prepareForm(), and tryAuthorizedSubmit().

◆ showAlways()

HTMLForm::showAlways ( )

Same as self::show with the difference, that the form will be added to the output, no matter, if the validation was good or not.

Returns
bool|Status Whether submission was successful.

Definition at line 587 of file HTMLForm.php.

References displayForm(), prepareForm(), and tryAuthorizedSubmit().

◆ showCancel()

HTMLForm::showCancel (   $show = true)

Show a cancel button (or prevent it).

The button is not shown by default.

Parameters
bool$show
Returns
HTMLForm $this for chaining calls
Since
1.27

Definition at line 1472 of file HTMLForm.php.

Referenced by McrUndoAction\alterForm().

◆ suppressDefaultSubmit()

HTMLForm::suppressDefaultSubmit (   $suppressSubmit = true)

Stop a default submit button being shown for this form.

This implies that an alternate submit method must be provided manually.

Since
1.22
Parameters
bool$suppressSubmitSet to false to re-enable the button again
Returns
HTMLForm $this for chaining calls

Definition at line 1460 of file HTMLForm.php.

Referenced by SpecialBotPasswords\alterForm(), and SpecialResetTokens\alterForm().

◆ suppressReset()

HTMLForm::suppressReset (   $suppressReset = true)

Stop a reset button being shown for this form.

Parameters
bool$suppressResetSet to false to re-enable the button again
Returns
HTMLForm $this for chaining calls (since 1.20)

Definition at line 1811 of file HTMLForm.php.

◆ tryAuthorizedSubmit()

HTMLForm::tryAuthorizedSubmit ( )

Try submitting, with edit token check first.

Returns
Status|bool

Definition at line 530 of file HTMLForm.php.

References getMethod(), ContextSource\getRequest(), ContextSource\getUser(), and trySubmit().

Referenced by show(), and showAlways().

◆ trySubmit()

HTMLForm::trySubmit ( )

Validate all the fields, and call the submission callback function if everything is kosher.

Exceptions
MWException
Returns
bool|string|array|Status
  • Bool true or a good Status object indicates success,
  • Bool false indicates no submission was attempted,
  • Anything else indicates failure. The value may be a fatal Status object, an HTML string, or an array of arrays (message keys and params) or strings (message keys)

Reimplemented in UploadForm.

Definition at line 608 of file HTMLForm.php.

References $res, array(), as, and filterDataForSubmit().

Referenced by tryAuthorizedSubmit().

◆ wasSubmitted()

HTMLForm::wasSubmitted ( )

Test whether the form was considered to have been submitted or not, i.e.

whether the last call to tryAuthorizedSubmit or trySubmit returned non-false.

This will return false until HTMLForm::tryAuthorizedSubmit or HTMLForm::trySubmit is called.

Since
1.23
Returns
bool

Definition at line 684 of file HTMLForm.php.

◆ wrapFieldSetSection()

HTMLForm::wrapFieldSetSection (   $legend,
  $section,
  $attributes,
  $isRoot 
)
protected

Wraps the given $section into an user-visible fieldset.

Parameters
string$legendLegend text for the fieldset
string$sectionThe section content in plain Html
array$attributesAdditional attributes for the fieldset
bool$isRootSection is at the root of the tree
Returns
string The fieldset's Html

Reimplemented in OOUIHTMLForm, and PreferencesFormOOUI.

Definition at line 1626 of file HTMLForm.php.

References $section.

Referenced by displaySection().

◆ wrapForm()

HTMLForm::wrapForm (   $html)

Wrap the form innards in an actual "<form>" element.

Parameters
string$htmlHTML contents to wrap.
Returns
string Wrapped HTML.

Reimplemented in OOUIHTMLForm, VFormHTMLForm, and PreferencesFormOOUI.

Definition at line 1092 of file HTMLForm.php.

References $html, and getFormAttributes().

Referenced by getHTML().

Member Data Documentation

◆ $availableDisplayFormats

array HTMLForm::$availableDisplayFormats
protected
Initial value:
= [
'table',
'div',
'raw',
'inline',
]

Available formats in which to display the form.

Definition at line 263 of file HTMLForm.php.

◆ $availableSubclassDisplayFormats

array HTMLForm::$availableSubclassDisplayFormats
protected
Initial value:
= [
'vform',
'ooui',
]

Available formats in which to display the form.

Definition at line 274 of file HTMLForm.php.

◆ $displayFormat

string HTMLForm::$displayFormat = 'table'
protected

Format in which to display form.

For viable options,

See also
$availableDisplayFormats

Definition at line 257 of file HTMLForm.php.

◆ $mAction

bool string HTMLForm::$mAction = false
protected

Form action URL.

false means we will use the URL to set Title

Since
1.19

Definition at line 222 of file HTMLForm.php.

◆ $mAutocomplete

string null HTMLForm::$mAutocomplete = null
protected

Form attribute autocomplete.

A typical value is "off". null does not set the attribute

Since
1.27

Definition at line 229 of file HTMLForm.php.

◆ $mButtons

HTMLForm::$mButtons = []
protected

Definition at line 233 of file HTMLForm.php.

◆ $mCancelTarget

HTMLForm::$mCancelTarget
protected

Definition at line 192 of file HTMLForm.php.

◆ $mFieldData

HTMLForm::$mFieldData

Definition at line 180 of file HTMLForm.php.

◆ $mFieldTree

HTMLForm::$mFieldTree
protected

Definition at line 187 of file HTMLForm.php.

◆ $mFlatFields

HTMLFormField [] HTMLForm::$mFlatFields
protected

Definition at line 185 of file HTMLForm.php.

◆ $mFooter

HTMLForm::$mFooter = ''
protected

Definition at line 199 of file HTMLForm.php.

◆ $mFormIdentifier

HTMLForm::$mFormIdentifier
protected

Definition at line 212 of file HTMLForm.php.

◆ $mHeader

HTMLForm::$mHeader = ''
protected

Definition at line 198 of file HTMLForm.php.

◆ $mHiddenFields

HTMLForm::$mHiddenFields = []
protected

Definition at line 232 of file HTMLForm.php.

◆ $mId

HTMLForm::$mId
protected

Definition at line 203 of file HTMLForm.php.

◆ $mMessagePrefix

HTMLForm::$mMessagePrefix
protected

Definition at line 182 of file HTMLForm.php.

◆ $mMethod

HTMLForm::$mMethod = 'post'
protected

Definition at line 214 of file HTMLForm.php.

◆ $mName

HTMLForm::$mName
protected

Definition at line 204 of file HTMLForm.php.

◆ $mPost

HTMLForm::$mPost = ''
protected

Definition at line 202 of file HTMLForm.php.

◆ $mPre

HTMLForm::$mPre = ''
protected

Definition at line 197 of file HTMLForm.php.

◆ $mSectionFooters

HTMLForm::$mSectionFooters = []
protected

Definition at line 201 of file HTMLForm.php.

◆ $mSectionHeaders

HTMLForm::$mSectionHeaders = []
protected

Definition at line 200 of file HTMLForm.php.

◆ $mShowCancel

HTMLForm::$mShowCancel = false
protected

Definition at line 191 of file HTMLForm.php.

◆ $mShowReset

HTMLForm::$mShowReset = false
protected

Definition at line 188 of file HTMLForm.php.

◆ $mShowSubmit

HTMLForm::$mShowSubmit = true
protected

Definition at line 189 of file HTMLForm.php.

◆ $mSubmitCallback

HTMLForm::$mSubmitCallback
protected

Definition at line 194 of file HTMLForm.php.

◆ $mSubmitFlags

HTMLForm::$mSubmitFlags = [ 'primary', 'progressive' ]
protected

Definition at line 190 of file HTMLForm.php.

Referenced by OOUIHTMLForm\getButtons().

◆ $mSubmitID

HTMLForm::$mSubmitID
protected

Definition at line 207 of file HTMLForm.php.

Referenced by OOUIHTMLForm\getButtons(), and VFormHTMLForm\getButtons().

◆ $mSubmitName

HTMLForm::$mSubmitName
protected

Definition at line 208 of file HTMLForm.php.

Referenced by OOUIHTMLForm\getButtons(), and VFormHTMLForm\getButtons().

◆ $mSubmitText

HTMLForm::$mSubmitText
protected

Definition at line 209 of file HTMLForm.php.

◆ $mSubmitTooltip

HTMLForm::$mSubmitTooltip
protected

Definition at line 210 of file HTMLForm.php.

◆ $mSubSectionBeforeFields

HTMLForm::$mSubSectionBeforeFields = true
protected

If true, sections that contain both fields and subsections will render their subsections before their fields.

Subclasses may set this to false to render subsections after fields instead.

Definition at line 250 of file HTMLForm.php.

◆ $mTableId

HTMLForm::$mTableId = ''
protected

Definition at line 205 of file HTMLForm.php.

◆ $mTitle

HTMLForm::$mTitle
protected

Definition at line 213 of file HTMLForm.php.

◆ $mTokenSalt

string array HTMLForm::$mTokenSalt = ''
protected

Salt for the edit token.

Definition at line 241 of file HTMLForm.php.

◆ $mUseMultipart

HTMLForm::$mUseMultipart = false
protected

Definition at line 231 of file HTMLForm.php.

◆ $mValidationErrorMessage

HTMLForm::$mValidationErrorMessage
protected

Definition at line 195 of file HTMLForm.php.

◆ $mWasSubmitted

HTMLForm::$mWasSubmitted = false
protected

Definition at line 215 of file HTMLForm.php.

◆ $mWrapperLegend

HTMLForm::$mWrapperLegend = false
protected

Definition at line 235 of file HTMLForm.php.

◆ $typeMappings

HTMLForm::$typeMappings
static

Definition at line 138 of file HTMLForm.php.


The documentation for this class was generated from the following file: