public static function EntitySelector::preRenderSelect in Opigno Learning path 3.x
Prepares a select render element.
Overrides Select::preRenderSelect
File
- modules/
opigno_user_selection/ src/ Element/ EntitySelector.php, line 80
Class
- EntitySelector
- Provides a form element for entity selection.
Namespace
Drupal\opigno_user_selection\ElementCode
public static function preRenderSelect($element) {
$element = parent::preRenderSelect($element);
$element['#attached']['library'] = [
'opigno_user_selection/userselect',
];
$element['#attributes']['data-user-load'] = TRUE;
if (empty($element['#entity_selector_route_name'])) {
$element['#entity_selector_route_name'] = 'user_selection_list';
}
$url = Url::fromRoute($element['#entity_selector_route_name'], [])
->toString(TRUE);
/** @var \Drupal\Core\Access\AccessManagerInterface $access_manager */
$access_manager = \Drupal::service('access_manager');
$access = $access_manager
->checkNamedRoute($element['#entity_selector_route_name'], [], \Drupal::currentUser(), TRUE);
if ($access) {
$metadata = BubbleableMetadata::createFromRenderArray($element);
if ($access
->isAllowed()) {
$element['#attributes']['class'][] = 'form-autocomplete';
$metadata
->addAttachments([
'library' => [
'opigno_user_selection/userselect',
],
]);
// Provide a data attribute for the JavaScript behavior to bind to.
$element['#attributes']['autocomplete-path'] = $url
->getGeneratedUrl();
$metadata = $metadata
->merge($url);
}
$metadata
->merge(BubbleableMetadata::createFromObject($access))
->applyTo($element);
}
if (isset($element['#data_type'])) {
$element['#attributes']['type'] = $element['#data_type'];
}
return $element;
}