public static ContextualLinks::preRenderLinks(array $element)
Pre-render callback: Builds a renderable array for contextual links.
Parameters
array $element: A renderable array containing a #contextual_links property, which is a keyed array. Each key is the name of the group of contextual links to render (based on the 'group' key in the *.links.contextual.yml files for all enabled modules). The value contains an associative array containing the following keys:
- route_parameters: The route parameters passed to the url generator.
- metadata: Any additional data needed in order to alter the link.
1 2 3 4 5 6 7 8 | array ( '#contextual_links' => array ( 'block' => array ( 'route_parameters' => array ( 'block' => 'system.menu-tools' ), ), 'menu' => array ( 'route_parameters' => array ( 'menu' => 'tools' ), ), )) |
Return value
array A renderable array representing contextual links.
File
- core/modules/contextual/src/Element/ContextualLinks.php, line 61
Class
- ContextualLinks
- Provides a contextual_links element.
Namespace
Drupal\contextual\Element
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | public static function preRenderLinks( array $element ) { // Retrieve contextual menu links. $items = array (); $contextual_links_manager = static ::contextualLinkManager(); foreach ( $element [ '#contextual_links' ] as $group => $args ) { $args += array ( 'route_parameters' => array (), 'metadata' => array (), ); $items += $contextual_links_manager ->getContextualLinksArrayByGroup( $group , $args [ 'route_parameters' ], $args [ 'metadata' ]); } // Transform contextual links into parameters suitable for links.html.twig. $links = array (); foreach ( $items as $class => $item ) { $class = Html::getClass( $class ); $links [ $class ] = array ( 'title' => $item [ 'title' ], 'url' => Url::fromRoute(isset( $item [ 'route_name' ]) ? $item [ 'route_name' ] : '' , isset( $item [ 'route_parameters' ]) ? $item [ 'route_parameters' ] : []), ); } $element [ '#links' ] = $links ; // Allow modules to alter the renderable contextual links element. static ::moduleHandler()->alter( 'contextual_links_view' , $element , $items ); // If there are no links, tell drupal_render() to abort rendering. if ( empty ( $element [ '#links' ])) { $element [ '#printed' ] = TRUE; } return $element ; } |
Please login to continue.