function OptionsButtonsWidget::formElement
Overrides OptionsWidgetBase::formElement
File
- 
              core/
lib/ Drupal/ Core/ Field/ Plugin/ Field/ FieldWidget/ OptionsButtonsWidget.php, line 30  
Class
- OptionsButtonsWidget
 - Plugin implementation of the 'options_buttons' widget.
 
Namespace
Drupal\Core\Field\Plugin\Field\FieldWidgetCode
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
  $element = parent::formElement($items, $delta, $element, $form, $form_state);
  $options = $this->getOptions($items->getEntity());
  $selected = $this->getSelectedOptions($items);
  // If required and there is one single option, preselect it.
  if ($this->required && count($options) == 1) {
    $selected = [
      array_key_first($options),
    ];
  }
  if ($this->multiple) {
    $element += [
      '#type' => 'checkboxes',
      '#default_value' => $selected,
      '#options' => $options,
    ];
  }
  else {
    $element += [
      '#type' => 'radios',
      // Radio buttons need a scalar value. Take the first default value, or
      // default to NULL so that the form element is properly recognized as
      // not having a default value.
'#default_value' => $selected ? reset($selected) : NULL,
      '#options' => $options,
    ];
  }
  return $element;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.