### `AbstractNumericFormField`
`AbstractNumericFormField` is the abstract implementation of a form field handling a single numeric value.
-The class implements `IMaximumFormField`, `IMinimumFormField`, `INullableFormField`, `IPlaceholderFormField` and `ISuffixedFormField`.
+The class implements `IImmutableFormField`, `IMaximumFormField`, `IMinimumFormField`, `INullableFormField`, `IPlaceholderFormField` and `ISuffixedFormField`.
If the property `$integerValues` is `true`, the form field works with integer values, otherwise it works with floating point numbers.
The methods `step($step = null)` and `getStep()` can be used to set and get the step attribute of the `input` element.
The default step for form fields with integer values is `1`.
### `MultipleSelectionFormField`
`MultipleSelectionFormField` is a form fields that allows the selection of multiple options out of a predefined list of available options.
-The class implements `INullableFormField` and `IFilterableSelectionFormField`.
+The class implements `IFilterableSelectionFormField`, `IImmutableFormField`, and `INullableFormField`.
If the field is nullable and no option is selected, `null` is returned as the save value.
### `RadioButtonFormField`
`RadioButtonFormField` is a form fields that allows the selection of a single option out of a predefined list of available options using radiobuttons.
-The class implements `ISelectionFormField`.
+The class implements `IImmutableFormField` and `ISelectionFormField`.
### `ShowOrderFormField`
### `SingleSelectionFormField`
`SingleSelectionFormField` is a form fields that allows the selection of a single option out of a predefined list of available options.
-The class implements `INullableFormField` and `IFilterableSelectionFormField`.
+The class implements `IFilterableSelectionFormField`, `IImmutableFormField`, and `INullableFormField`.
If the field is nullable and the current form field value is considered `empty` by PHP, `null` is returned as the save value.
### `TextFormField`
`TextFormField` is a form field that allows entering a single line of text.
-The class implements `II18nFormField`, `IMaximumLengthFormField`, `IMinimumLengthFormField`, and `IPlaceholderFormField`.
+The class implements `IImmutableFormField`, `II18nFormField`, `IMaximumLengthFormField`, `IMinimumLengthFormField`, and `IPlaceholderFormField`.
### `TitleFormField`
### `UserFormField`
`UserFormField` is a form field to enter existing users.
-The class implements `IMultipleFormField` and `INullableFormField`.
+The class implements `IImmutableFormField`, `IMultipleFormField`, and `INullableFormField`.
### `UserGroupOptionFormField`
### `UsernameFormField`
`UsernameFormField` is used for entering one non-existing username.
-The class implements `IMaximumLengthFormField`, `IMinimumLengthFormField`, `INullableFormField`, and `IPlaceholderFormField`.
+The class implements `IImmutableFormField`, `IMaximumLengthFormField`, `IMinimumLengthFormField`, `INullableFormField`, and `IPlaceholderFormField`.
As usernames have a system-wide restriction of a minimum length of 3 and a maximum length of 100 characters, these values are also used as the default value for the field’s minimum and maximum length.
- `autoFocus($autoFocus = true)` and `isAutoFocused()` can be used to determine if the form field is auto-focused when the page loads.
By default, form fields are not auto-focused.
- `addValidator(IFormFieldValidator $validator)`, `getValidators()`, `removeValidator($validatorId)`, and `hasValidator($validatorId)` can be used to get, set, remove, and check for validators for the form field (see [form validation](php_api_form_builder-validation_data.html#form-validation)).
-- `immutable($immutable = true)` and `isImmutable()` can be used to determine if the value of the form field is mutable or immutable.
- By default, form field are mutable.
- `objectProperty($objectProperty)` and `getObjectProperty()` can be used to get and set the object property that the field represents.
When setting the object property is set to an empty string, the previously set object property is unset.
If no object property has been set, the field’s (non-prefixed) id is returned.
{% include callout.html content="`TI18nFormField` already provides a default implementation of `IFormField::validate()`." type="info" %}
+#### `IImmutableFormField` / `TImmutableFormField`
+
+`IImmutableFormField` has to be implemented by form fields that support being displayed but whose value cannot be changed.
+The implementing class has to implement the methods `immutable($immutable = true)` and `isImmutable()` that can be used to determine if the value of the form field is mutable or immutable.
+By default, form field are mutable.
+
+
#### `IMaximumFormField` / `TMaximumFormField`
`IMaximumFormField` has to be implemented by form fields if the entered value must have a maximum value.