public function ProviderBasedGenerator::generate

Generates a URL or path for a specific route based on the given parameters.

Parameters that reference placeholders in the route pattern will substitute them in the path or host. Extra params are added as query string to the URL.

When the passed reference type cannot be generated for the route because it requires a different host or scheme than the current one, the method will return a more comprehensive reference that includes the required params. For example, when you call this method with $referenceType = ABSOLUTE_PATH but the route requires the https scheme whereas the current scheme is http, it will instead return an ABSOLUTE_URL with the https scheme and the current host. This makes sure the generated URL matches the route in any case.

If there is no route with the given name, the generator must throw the RouteNotFoundException.

@api

Parameters

string $name The name of the route:

mixed $parameters An array of parameters:

Boolean|string $referenceType The type of reference to be generated (one of the constants):

Return value

string The generated URL

Throws

RouteNotFoundException If the named route doesn't exist

MissingMandatoryParametersException When some parameters are missing that are mandatory for the route

InvalidParameterException When a parameter value for a placeholder is not correct because it does not match the requirement

Overrides UrlGenerator::generate

1 call to ProviderBasedGenerator::generate()
ContentAwareGenerator::generate in drupal/core/vendor/symfony-cmf/routing/Symfony/Cmf/Component/Routing/ContentAwareGenerator.php
2 methods override ProviderBasedGenerator::generate()
ContentAwareGenerator::generate in drupal/core/vendor/symfony-cmf/routing/Symfony/Cmf/Component/Routing/ContentAwareGenerator.php
UrlGenerator::generate in drupal/core/lib/Drupal/Core/Routing/UrlGenerator.php
Implements Symfony\Component\Routing\Generator\UrlGeneratorInterface::generate().

File

drupal/core/vendor/symfony-cmf/routing/Symfony/Cmf/Component/Routing/ProviderBasedGenerator.php, line 36

Class

ProviderBasedGenerator
A Generator that uses a RouteProvider rather than a RouteCollection

Namespace

Symfony\Cmf\Component\Routing

Code

public function generate($name, $parameters = array(), $absolute = false) {
  if ($name instanceof SymfonyRoute) {
    $route = $name;
  }
  elseif (null === ($route = $this->provider
    ->getRouteByName($name, $parameters))) {
    throw new RouteNotFoundException(sprintf('Route "%s" does not exist.', $name));
  }

  // the Route has a cache of its own and is not recompiled as long as it does not get modified
  $compiledRoute = $route
    ->compile();
  $hostTokens = $compiledRoute
    ->getHostTokens();
  return $this
    ->doGenerate($compiledRoute
    ->getVariables(), $route
    ->getDefaults(), $route
    ->getRequirements(), $compiledRoute
    ->getTokens(), $parameters, $name, $absolute, $hostTokens);
}