public static function YamlFormLocation::processYamlFormComposite in YAML Form 8
Processes a composite form element.
Overrides YamlFormCompositeBase::processYamlFormComposite
1 call to YamlFormLocation::processYamlFormComposite()
- YamlFormLocation::getInitializedCompositeElement in src/
Plugin/ YamlFormElement/ YamlFormLocation.php - Get initialized composite element.
File
- src/
Element/ YamlFormLocation.php, line 105
Class
- YamlFormLocation
- Provides a form element for a location element.
Namespace
Drupal\yamlform\ElementCode
public static function processYamlFormComposite(&$element, FormStateInterface $form_state, &$complete_form) {
$element = parent::processYamlFormComposite($element, $form_state, $complete_form);
// Composite elements should always be displayed and rendered so that
// location data can be populated, so #access is really just converting the
// readonly elements to hidden elements.
$composite_elements = static::getCompositeElements();
foreach ($composite_elements as $composite_key => $composite_element) {
if ($composite_key != 'value') {
if (isset($element[$composite_key]['#access']) && $element[$composite_key]['#access'] === FALSE) {
unset($element[$composite_key]['#access']);
$element[$composite_key]['#type'] = 'hidden';
}
elseif (!empty($element['#hidden']) && !empty($element['#geolocation'])) {
$element[$composite_key]['#type'] = 'hidden';
}
else {
$element[$composite_key]['#attributes']['class'][] = 'yamlform-readonly';
$element[$composite_key]['#readonly'] = 'readonly';
}
}
}
// Set required.
if (isset($element['#required'])) {
$element['value']['#required'] = $element['#required'];
}
// Set Geolocation detection attribute.
if (!empty($element['#geolocation'])) {
$element['value']['#attributes']['data-yamlform-location-geolocation'] = 'data-yamlform-location-geolocation';
}
// Writing script tags (only once) directly into the page's output to ensure
// that Google Maps APi script is loaded using the proper API key.
static $google_api;
if (empty($google_api)) {
$api_key = !empty($element['#api_key']) ? $element['#api_key'] : \Drupal::config('yamlform.settings')
->get('elements.default_google_maps_api_key');
$element['script'] = [
'#markup' => '<script src="https://maps.googleapis.com/maps/api/js?key=' . $api_key . '&libraries=places"></script>',
'#allowed_tags' => [
'script',
],
];
$google_api = TRUE;
}
$element['#attached']['library'][] = 'yamlform/yamlform.element.location';
$element['#element_validate'] = [
[
get_called_class(),
'validateYamlFormLocation',
],
];
return $element;
}