public function WebformElementManager::buildElement in Webform 6.x
Same name and namespace in other branches
- 8.5 src/Plugin/WebformElementManager.php \Drupal\webform\Plugin\WebformElementManager::buildElement()
 
Build a Webform element.
Parameters
array $element: An associative array containing an element with a #type property.
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Overrides WebformElementManagerInterface::buildElement
See also
hook_webform_element_ELEMENT_TYPE_alter()
\Drupal\webform\WebformSubmissionForm::prepareElements
File
- src/
Plugin/ WebformElementManager.php, line 165  
Class
- WebformElementManager
 - Provides a plugin manager for webform element plugins.
 
Namespace
Drupal\webform\PluginCode
public function buildElement(array &$element, array $form, FormStateInterface $form_state) {
  // Get the webform submission.
  $form_object = $form_state
    ->getFormObject();
  /** @var \Drupal\webform\WebformSubmissionInterface $webform_submission */
  $webform_submission = $form_object instanceof WebformSubmissionForm ? $form_object
    ->getEntity() : NULL;
  $webform = $webform_submission ? $webform_submission
    ->getWebform() : NULL;
  $element_plugin = $this
    ->getElementInstance($element, $webform_submission ?: $webform);
  $element_plugin
    ->prepare($element, $webform_submission);
  $element_plugin
    ->finalize($element, $webform_submission);
  $element_plugin
    ->setDefaultValue($element);
  // Allow modules to alter the webform element.
  // @see \Drupal\Core\Field\WidgetBase::formSingleElement()
  $hooks = [
    'webform_element',
  ];
  if (!empty($element['#type'])) {
    $hooks[] = 'webform_element_' . $element['#type'];
  }
  $context = [
    'form' => $form,
  ];
  $this->moduleHandler
    ->alter($hooks, $element, $form_state, $context);
  // Allow handlers to alter the webform element.
  if ($webform_submission) {
    $webform
      ->invokeHandlers('alterElement', $element, $form_state, $context);
  }
}