function LocalActionDefault::getRouteParameters

Same name in other branches
  1. 9 core/lib/Drupal/Core/Menu/LocalActionDefault.php \Drupal\Core\Menu\LocalActionDefault::getRouteParameters()
  2. 8.9.x core/lib/Drupal/Core/Menu/LocalActionDefault.php \Drupal\Core\Menu\LocalActionDefault::getRouteParameters()
  3. 11.x core/lib/Drupal/Core/Menu/LocalActionDefault.php \Drupal\Core\Menu\LocalActionDefault::getRouteParameters()

Overrides LocalActionInterface::getRouteParameters

File

core/lib/Drupal/Core/Menu/LocalActionDefault.php, line 85

Class

LocalActionDefault
Provides a default implementation for local action plugins.

Namespace

Drupal\Core\Menu

Code

public function getRouteParameters(RouteMatchInterface $route_match) {
    $route_parameters = $this->pluginDefinition['route_parameters'] ?? [];
    $route = $this->routeProvider
        ->getRouteByName($this->getRouteName());
    $variables = $route->compile()
        ->getVariables();
    // Normally the \Drupal\Core\ParamConverter\ParamConverterManager has
    // run, and the route parameters have been upcast. The original values can
    // be retrieved from the raw parameters. For example, if the route's path is
    // /filter/tips/{filter_format} and the path is /filter/tips/plain_text then
    // $raw_parameters->get('filter_format') == 'plain_text'. Parameters that
    // are not represented in the route path as slugs might be added by a route
    // enhancer and will not be present in the raw parameters.
    $raw_parameters = $route_match->getRawParameters();
    $parameters = $route_match->getParameters();
    foreach ($variables as $name) {
        if (isset($route_parameters[$name])) {
            continue;
        }
        if ($raw_parameters->has($name)) {
            $route_parameters[$name] = $raw_parameters->get($name);
        }
        elseif ($parameters->has($name)) {
            $route_parameters[$name] = $parameters->get($name);
        }
    }
    // The UrlGenerator will throw an exception if expected parameters are
    // missing. This method should be overridden if that is possible.
    return $route_parameters;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.