You are here

public function EntityAutocomplete::setDefaultValue in Webform 6.x

Same name and namespace in other branches
  1. 8.5 src/Plugin/WebformElement/EntityAutocomplete.php \Drupal\webform\Plugin\WebformElement\EntityAutocomplete::setDefaultValue()

Set an element's default value using saved data.

The method allows the submission's 'saved' #default_value to be different from the element's #default_value.

Parameters

array $element: An element.

Overrides WebformElementBase::setDefaultValue

See also

\Drupal\webform\Plugin\WebformElement\DateBase::setDefaultValue

\Drupal\webform\Plugin\WebformElement\EntityAutocomplete::setDefaultValue

File

src/Plugin/WebformElement/EntityAutocomplete.php, line 44

Class

EntityAutocomplete
Provides a 'entity_autocomplete' element.

Namespace

Drupal\webform\Plugin\WebformElement

Code

public function setDefaultValue(array &$element) {

  // Make sure tags or multiple is used.
  if (!empty($element['#tags']) && isset($element['#multiple'])) {
    unset($element['#multiple']);
  }
  if (isset($element['#multiple'])) {
    $element['#default_value'] = isset($element['#default_value']) ? (array) $element['#default_value'] : NULL;
    return;
  }
  if (!empty($element['#default_value'])) {
    $target_type = $this
      ->getTargetType($element);
    $entity_storage = $this->entityTypeManager
      ->getStorage($target_type);
    if ($entities = $entity_storage
      ->loadMultiple((array) $element['#default_value'])) {
      $element['#default_value'] = empty($element['#tags']) ? reset($entities) : $entities;
    }
    else {
      $element['#default_value'] = NULL;
    }
  }
  else {
    $element['#default_value'] = NULL;
  }
}