getValues(), and is used to access processing * information for the field through the getWidgetState() and * setWidgetState() methods. * - #title: The sanitized element label for the field, ready for output. * - #description: The sanitized element description for the field, ready * for output. * - #required: A Boolean indicating whether the element value is required; * for required multiple value fields, only the first widget's values are * required. * - #delta: The order of this item in the array of sub-elements; see $delta * above. * @param array $form * The form structure where widgets are being attached to. This might be a * full form structure, or a sub-element of a larger form. * @param \Drupal\Core\Form\FormStateInterface $form_state * The current state of the form. * * @return array * The form elements for a single widget for this field. * * @see hook_field_widget_single_element_form_alter() * @see hook_field_widget_single_element_WIDGET_TYPE_form_alter() */ public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state); /** * Assigns a field-level validation error to the right widget sub-element. * * Depending on the widget's internal structure, a field-level validation * error needs to be flagged on the right sub-element. * * @param array $element * An array containing the form element for the widget, as generated by * formElement(). * @param \Symfony\Component\Validator\ConstraintViolationInterface $violation * A constraint violation reported during the validation phase. * @param array $form * The form structure where field elements are attached to. This might be a * full form structure, or a sub-element of a larger form. * @param \Drupal\Core\Form\FormStateInterface $form_state * The current state of the form. * * @return array|bool * The element on which the error should be flagged, or FALSE to completely * ignore the violation (use with care!). */ public function errorElement(array $element, ConstraintViolationInterface $violation, array $form, FormStateInterface $form_state); /** * Massages the form values into the format expected for field values. * * @param array $values * The submitted form values produced by the widget. * - If the widget does not manage multiple values itself, the array holds * the values generated by the multiple copies of the $element generated * by the formElement() method, keyed by delta. * - If the widget manages multiple values, the array holds the values * of the form element generated by the formElement() method. * @param array $form * The form structure where field elements are attached to. This might be a * full form structure, or a sub-element of a larger form. * @param \Drupal\Core\Form\FormStateInterface $form_state * The form state. * * @return array * An array of field values, keyed by delta. */ public function massageFormValues(array $values, array $form, FormStateInterface $form_state); /** * Returns if the widget can be used for the provided field. * * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition * The field definition that should be checked. * * @return bool * TRUE if the widget can be used, FALSE otherwise. */ public static function isApplicable(FieldDefinitionInterface $field_definition); }