Same name and namespace in other branches
  1. 10 core/lib/Drupal/Core/Utility/LinkGeneratorInterface.php \Drupal\Core\Utility\LinkGeneratorInterface::generate()
  2. 9 core/lib/Drupal/Core/Utility/LinkGeneratorInterface.php \Drupal\Core\Utility\LinkGeneratorInterface::generate()

Renders a link to a URL.

Examples:

$link_generator = \Drupal::service('link_generator');
$installer_url = \Drupal\Core\Url::fromUri('base://core/install.php');
$installer_link = $link_generator
  ->generate($text, $installer_url);
$external_url = \Drupal\Core\Url::fromUri('http://example.com', [
  'query' => [
    'foo' => 'bar',
  ],
]);
$external_link = $link_generator
  ->generate($text, $external_url);
$internal_url = \Drupal\Core\Url::fromRoute('system.admin');
$internal_link = $link_generator
  ->generate($text, $internal_url);

However, for links enclosed in translatable text you should use t() and embed the HTML anchor tag directly in the translated string. For example:

$text = t('Visit the <a href=":url">content types</a> page', array(
  ':url' => Url::fromRoute('entity.node_type.collection')
    ->toString(),
));

This keeps the context of the link title ('settings' in the example) for translators.

@internal Should not be used in user code. Use \Drupal\Core\Link instead.

Parameters

string|array|\Drupal\Component\Render\MarkupInterface $text: The link text for the anchor tag as a translated string or render array. Strings will be sanitized automatically. If you need to output HTML in the link text, use a render array or an already sanitized string such as the output of \Drupal\Component\Utility\Xss::filter() or \Drupal\Component\Render\FormattableMarkup.

\Drupal\Core\Url $url: The URL object used for the link. Amongst its options, the following may be set to affect the generated link:

  • attributes: An associative array of HTML attributes to apply to the anchor tag. If element 'class' is included, it must be an array; 'title' must be a string; other elements are more flexible, as they just need to work as an argument for the constructor of the class Drupal\Core\Template\Attribute($options['attributes']).
  • language: An optional language object. If the path being linked to is internal to the site, $options['language'] is used to determine whether the link is "active", or pointing to the current page (the language as well as the path must match).
  • 'set_active_class': Whether this method should compare the $route_name, $parameters, language and query options to the current URL to determine whether the link is "active". Defaults to FALSE. If TRUE, an "active" class will be applied to the link. It is important to use this sparingly since it is usually unnecessary and requires extra processing.

Return value

\Drupal\Core\GeneratedLink A GeneratedLink object containing a link to the given route and parameters and bubbleable metadata.

Throws

\Symfony\Component\Routing\Exception\RouteNotFoundException Thrown when the named route doesn't exist.

\Symfony\Component\Routing\Exception\MissingMandatoryParametersException Thrown when some parameters are missing that are mandatory for the route.

\Symfony\Component\Routing\Exception\InvalidParameterException Thrown when a parameter value for a placeholder is not correct because it does not match the requirement.

1 method overrides LinkGeneratorInterface::generate()
LinkGenerator::generate in core/lib/Drupal/Core/Utility/LinkGenerator.php
For anonymous users, the "active" class will be calculated on the server, because most sites serve each anonymous user the same cached page anyway. For authenticated users, the "active" class will be calculated on the client…

File

core/lib/Drupal/Core/Utility/LinkGeneratorInterface.php, line 74

Class

LinkGeneratorInterface
Defines an interface for generating links from route names and parameters.

Namespace

Drupal\Core\Utility

Code

public function generate($text, Url $url);