public function Js::preRenderJsCallback in JS Callback Handler 8.3
Pre-render callback for #js_callback and #js_get properties.
Parameters
array $element: The render array element.
Return value
array The modified render array element.
See also
js_element_info_alter
File
- src/
Js.php, line 632
Class
- Js
- JS Callback Handler service.
Namespace
Drupal\jsCode
public function preRenderJsCallback(array $element) {
if (isset($element['#js_callback']) && $this->callbackManager
->hasDefinition($element['#js_callback'])) {
$element['#attached']['library'][] = 'js/callback';
$element['#attributes']['data-js-callback'] = $element['#js_callback'];
if ($token = $this
->getToken($element['#js_callback'])) {
$element['#attributes']['data-js-token'] = $token;
}
}
elseif (isset($element['#js_get'])) {
$path = $element['#js_get'];
if ($path === TRUE) {
$path = isset($element['#url']) ? $element['#url'] : '';
}
if ($path) {
if (is_string($path)) {
if ($url = \Drupal::pathValidator()
->getUrlIfValidWithoutAccessCheck($element['#js_get'])) {
$path = $url;
}
}
if ($path instanceof Url) {
$path = $path
->toString();
}
$element['#attached']['library'][] = 'js/get';
$element['#attributes']['data-js-get'] = 'js.content';
$element['#attributes']['data-path'] = $path;
}
}
return $element;
}