public static function WebformSame::validateDestination in Webform 6.x
Same name and namespace in other branches
- 8.5 src/Plugin/WebformElement/WebformSame.php \Drupal\webform\Plugin\WebformElement\WebformSame::validateDestination()
Form API callback. Validate webform same as destination.
File
- src/
Plugin/ WebformElement/ WebformSame.php, line 98
Class
- WebformSame
- Provides a 'webform_same' element.
Namespace
Drupal\webform\Plugin\WebformElementCode
public static function validateDestination(array &$element, FormStateInterface $form_state) {
/** @var \Drupal\webform\WebformInterface $webform */
$webform = $form_state
->getFormObject()
->getWebform();
// Get source and destination elements.
$values = $form_state
->getValues();
$source = $values['properties']['source'];
$source_element = $webform
->getElement($source);
$destination = $values['properties']['destination'];
$destination_element = $webform
->getElement($destination);
if ($destination === $source) {
$form_state
->setError($element, t('The source and destination can not be the same element.'));
}
elseif ($destination_element['#type'] !== $source_element['#type']) {
/** @var \Drupal\webform\Plugin\WebformElementManagerInterface $element_manager */
$element_manager = \Drupal::service('plugin.manager.webform.element');
$element_plugin = $element_manager
->getElementInstance($element);
$t_args = [
'@type' => $element_plugin
->getPluginLabel(),
'@source' => $source_element['#admin_title'],
'@destination' => $destination_element['#admin_title'],
];
$form_state
->setError($element, t('The destination element (@destination) must be the same element type (@type) as source element (@source).', $t_args));
}
}