public LocalActionManager::getActionsForRoute($route_appears)
Finds all local actions that appear on a named route.
Parameters
string $route_appears: The route name for which to find local actions.
Return value
array An array of link render arrays.
Overrides LocalActionManagerInterface::getActionsForRoute
File
- core/lib/Drupal/Core/Menu/LocalActionManager.php, line 160
Class
- LocalActionManager
- Provides the default local action manager using YML as primary definition.
Namespace
Drupal\Core\Menu
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 36 37 38 39 40 41 42 | public function getActionsForRoute( $route_appears ) { if (!isset( $this ->instances[ $route_appears ])) { $route_names = array (); $this ->instances[ $route_appears ] = array (); // @todo - optimize this lookup by compiling or caching. foreach ( $this ->getDefinitions() as $plugin_id => $action_info ) { if (in_array( $route_appears , $action_info [ 'appears_on' ])) { $plugin = $this ->createInstance( $plugin_id ); $route_names [] = $plugin ->getRouteName(); $this ->instances[ $route_appears ][ $plugin_id ] = $plugin ; } } // Pre-fetch all the action route objects. This reduces the number of SQL // queries that would otherwise be triggered by the access manager. if (! empty ( $route_names )) { $this ->routeProvider->getRoutesByNames( $route_names ); } } $links = array (); /** @var $plugin \Drupal\Core\Menu\LocalActionInterface */ foreach ( $this ->instances[ $route_appears ] as $plugin_id => $plugin ) { $cacheability = new CacheableMetadata(); $route_name = $plugin ->getRouteName(); $route_parameters = $plugin ->getRouteParameters( $this ->routeMatch); $access = $this ->accessManager->checkNamedRoute( $route_name , $route_parameters , $this ->account, TRUE); $links [ $plugin_id ] = array ( '#theme' => 'menu_local_action' , '#link' => array ( 'title' => $this ->getTitle( $plugin ), 'url' => Url::fromRoute( $route_name , $route_parameters ), 'localized_options' => $plugin ->getOptions( $this ->routeMatch), ), '#access' => $access , '#weight' => $plugin ->getWeight(), ); $cacheability ->addCacheableDependency( $access )->addCacheableDependency( $plugin ); $cacheability ->applyTo( $links [ $plugin_id ]); } $links [ '#cache' ][ 'contexts' ][] = 'route' ; return $links ; } |
Please login to continue.