public function WebformElementManager::buildElement in Webform 8.5
Same name and namespace in other branches
- 6.x 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);
}
}