public function WebformEntityReferenceSelectWidget::getTargetIdElement in Webform 6.x
Same name and namespace in other branches
- 8.5 src/Plugin/Field/FieldWidget/WebformEntityReferenceSelectWidget.php \Drupal\webform\Plugin\Field\FieldWidget\WebformEntityReferenceSelectWidget::getTargetIdElement()
Returns the target id element form for a single webform field widget.
Parameters
\Drupal\Core\Field\FieldItemListInterface $items: Array of default values for this field.
int $delta: The order of this item in the array of sub-elements (0, 1, 2, etc.).
array $element: A form element array containing basic properties for the widget.
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.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form elements for a single widget for this field.
Overrides WebformEntityReferenceWidgetTrait::getTargetIdElement
File
- src/
Plugin/ Field/ FieldWidget/ WebformEntityReferenceSelectWidget.php, line 43
Class
- WebformEntityReferenceSelectWidget
- Plugin implementation of the 'webform_entity_reference_select' widget.
Namespace
Drupal\webform\Plugin\Field\FieldWidgetCode
public function getTargetIdElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
// Get default value (webform ID).
$referenced_entities = $items
->referencedEntities();
$default_value = isset($referenced_entities[$delta]) ? $referenced_entities[$delta] : NULL;
// Convert default_value's Webform to a simple entity_id.
if ($default_value instanceof WebformInterface) {
$default_value = $default_value
->id();
}
// Get options grouped by category.
$options = $this
->getOptions($items
->getEntity());
// Make sure if an archived webform is the #default_value always include
// it as an option.
if ($default_value && ($webform = Webform::load($default_value))) {
if ($webform
->isArchived()) {
$options[(string) $this
->t('Archived')][$webform
->id()] = $webform
->label();
}
}
$target_element = [
'#type' => 'webform_entity_select',
'#options' => $options,
'#default_value' => $default_value,
];
// Set empty option.
if (empty($element['#required'])) {
$target_element['#empty_option'] = $this
->t('- Select -');
$target_element['#empty_value'] = '';
}
// Set validation callback.
$target_element['#element_validate'] = [
[
get_class($this),
'validateWebformEntityReferenceSelectWidget',
],
];
return $target_element;
}