function _contextual_links_to_id
Serializes #contextual_links property value array to a string.
Examples:
- node:node=1:langcode=en
 - views_ui_edit:view=frontpage:location=page&view_name=frontpage&view_display_id=page_1&langcode=en
 - menu:menu=tools:langcode=en|block:block=olivero.tools:langcode=en
 
So, expressed in a pattern: <group>:<route parameters>:<metadata>
The route parameters and options are encoded as query strings.
Parameters
array $contextual_links: The $element['#contextual_links'] value for some render element.
Return value
string A serialized representation of a #contextual_links property value array for use in a data- attribute.
3 calls to _contextual_links_to_id()
- ContextualLinks::render in core/
modules/ contextual/ src/ Plugin/ views/ field/ ContextualLinks.php  - Overrides \Drupal\views\Plugin\views\field\FieldPluginBase::render().
 - ContextualUnitTest::testContextualLinksToId in core/
modules/ contextual/ tests/ src/ Kernel/ ContextualUnitTest.php  - Tests the conversion from contextual links to IDs.
 - contextual_preprocess in core/
modules/ contextual/ contextual.module  - Implements hook_preprocess().
 
File
- 
              core/
modules/ contextual/ contextual.module, line 174  
Code
function _contextual_links_to_id($contextual_links) {
  $ids = [];
  $langcode = \Drupal::languageManager()->getCurrentLanguage(LanguageInterface::TYPE_URL)
    ->getId();
  foreach ($contextual_links as $group => $args) {
    $route_parameters = UrlHelper::buildQuery($args['route_parameters']);
    $args += [
      'metadata' => [],
    ];
    // Add the current URL language to metadata so a different ID will be
    // computed when URLs vary by language. This allows to store different
    // language-aware contextual links on the client side.
    $args['metadata'] += [
      'langcode' => $langcode,
    ];
    $metadata = UrlHelper::buildQuery($args['metadata']);
    $ids[] = "{$group}:{$route_parameters}:{$metadata}";
  }
  return implode('|', $ids);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.