protected function WidgetBase::formSingleElement

Generates the form element for a single copy of the widget.

3 calls to WidgetBase::formSingleElement()
FileWidget::formMultipleElements in drupal/core/modules/file/lib/Drupal/file/Plugin/field/widget/FileWidget.php
Overrides \Drupal\field\Plugin\Type\Widget\WidgetBase::formMultipleElements().
WidgetBase::form in drupal/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetBase.php
Implements Drupal\field\Plugin\Type\Widget\WidgetInterface::form().
WidgetBase::formMultipleElements in drupal/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetBase.php
Special handling to create form elements for multiple values.

File

drupal/core/modules/field/lib/Drupal/field/Plugin/Type/Widget/WidgetBase.php, line 276
Definition of Drupal\field\Plugin\Type\Widget\WidgetBase.

Class

WidgetBase
Base class for 'Field widget' plugin implementations.

Namespace

Drupal\field\Plugin\Type\Widget

Code

protected function formSingleElement(EntityInterface $entity, array $items, $delta, $langcode, array $element, array &$form, array &$form_state) {
  $instance = $this->instance;
  $field = $this->field;
  $element += array(
    '#entity_type' => $entity
      ->entityType(),
    '#bundle' => $entity
      ->bundle(),
    '#entity' => $entity,
    '#field_name' => $field['field_name'],
    '#language' => $langcode,
    '#field_parents' => $form['#parents'],
    '#columns' => array_keys($field['columns']),
    // Only the first widget should be required.
    '#required' => $delta == 0 && $instance['required'],
    '#delta' => $delta,
    '#weight' => $delta,
  );
  $element = $this
    ->formElement($items, $delta, $element, $langcode, $form, $form_state);
  if ($element) {

    // Allow modules to alter the field widget form element.
    $context = array(
      'form' => $form,
      'field' => $field,
      'instance' => $instance,
      'langcode' => $langcode,
      'items' => $items,
      'delta' => $delta,
      'default' => !empty($entity->field_ui_default_value),
    );
    drupal_alter(array(
      'field_widget_form',
      'field_widget_' . $this
        ->getPluginId() . '_form',
    ), $element, $form_state, $context);
  }
  return $element;
}