function hook_field_widget_form_alter in Drupal 9
Same name and namespace in other branches
- 8 core/modules/field/field.api.php \hook_field_widget_form_alter()
- 7 modules/field/field.api.php \hook_field_widget_form_alter()
Alter forms for field widgets provided by other modules.
This hook can only modify individual elements within a field widget and cannot alter the top level (parent element) for multi-value fields. In most cases, you should use hook_field_widget_multivalue_form_alter() instead and loop over the elements.
Parameters
$element: The field widget form element as constructed by \Drupal\Core\Field\WidgetBaseInterface::form().
$form_state: The current state of the form.
$context: An associative array containing the following key-value pairs:
- form: The form structure to which widgets are being attached. This may be a full form structure, or a sub-element of a larger form.
- widget: The widget plugin instance.
- items: The field values, as a \Drupal\Core\Field\FieldItemListInterface object.
- delta: The order of this item in the array of subelements (0, 1, 2, etc).
- default: A boolean indicating whether the form is being shown as a dummy form to set default values.
Deprecated
in drupal:9.2.0 and is removed from drupal:10.0.0. Use hook_field_widget_single_element_form_alter instead.
See also
https://www.drupal.org/node/3180429
\Drupal\Core\Field\WidgetBaseInterface::form()
\Drupal\Core\Field\WidgetBase::formSingleElement()
hook_field_widget_WIDGET_TYPE_form_alter()
hook_field_widget_multivalue_form_alter()
Related topics
File
- core/
modules/ field/ field.api.php, line 196 - Field API documentation.
Code
function hook_field_widget_form_alter(&$element, \Drupal\Core\Form\FormStateInterface $form_state, $context) {
// Add a css class to widget form elements for all fields of type my_type.
$field_definition = $context['items']
->getFieldDefinition();
if ($field_definition
->getType() == 'my_type') {
// Be sure not to overwrite existing attributes.
$element['#attributes']['class'][] = 'my-class';
}
}