diff -u b/core/lib/Drupal/Core/Template/TwigExtension.php b/core/lib/Drupal/Core/Template/TwigExtension.php --- b/core/lib/Drupal/Core/Template/TwigExtension.php +++ b/core/lib/Drupal/Core/Template/TwigExtension.php @@ -15,6 +15,7 @@ use Drupal\Core\Routing\UrlGeneratorInterface; use Drupal\Core\Url; use Drupal\Core\Utility\LinkGeneratorInterface; +use Drupal\Core\Theme\ThemeManagerInterface; /** * A class providing Drupal Twig extensions. @@ -40,26 +41,28 @@ protected $linkGenerator; /** - * Constructs \Drupal\Core\Template\TwigExtension. + * The theme manager. * - * @param \Drupal\Core\Routing\UrlGeneratorInterface $url_generator - * The URL generator. + * @var \Drupal\Core\Theme\ThemeManagerInterface; */ - public function setGenerators(UrlGeneratorInterface $url_generator) { - $this->urlGenerator = $url_generator; - return $this; - } + protected $themeManager; /** - * Sets the link generator. + * Constructs \Drupal\Core\Template\TwigExtension. * + * @param \Drupal\Core\Routing\UrlGeneratorInterface $url_generator + * The URL generator. * @param \Drupal\Core\Utility\LinkGeneratorInterface $link_generator * The link generator. + * @param \Drupal\Core\Theme\ThemeManagerInterface $theme_manager + * The theme manager. * * @return $this */ - public function setLinkGenerator(LinkGeneratorInterface $link_generator) { + public function setDependencies(UrlGeneratorInterface $url_generator, LinkGeneratorInterface $link_generator, ThemeManagerInterface $theme_manager) { + $this->urlGenerator = $url_generator; $this->linkGenerator = $link_generator; + $this->themeManager = $theme_manager; return $this; } @@ -226,7 +229,7 @@ * The name of the active theme. */ public function activeTheme() { - return \Drupal::service('theme.manager')->getActiveTheme()->getName(); + return $this->themeManager->getActiveTheme()->getName(); } /** only in patch2: unchanged: --- a/core/core.services.yml +++ b/core/core.services.yml @@ -1219,8 +1219,7 @@ services: tags: - { name: twig.extension, priority: 100 } calls: - - [setGenerators, ['@url_generator']] - - [setLinkGenerator, ['@link_generator']] + - [setDependencies, ['@url_generator', '@link_generator', '@theme.manager']] # @todo Figure out what to do about debugging functions. # @see http://drupal.org/node/1804998 twig.extension.debug: only in patch2: unchanged: --- a/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php +++ b/core/tests/Drupal/Tests/Core/Template/TwigExtensionTest.php @@ -31,7 +31,13 @@ public function testEscaping($template, $expected) { 'autoescape' => TRUE, 'optimizations' => 0 )); - $twig->addExtension((new TwigExtension())->setGenerators($this->getMock('Drupal\Core\Routing\UrlGeneratorInterface'))); + $twig->addExtension((new TwigExtension()) + ->setGenerators( + $this->getMock('Drupal\Core\Routing\UrlGeneratorInterface'), + $this->getMock('Drupal\Core\Utility\LinkGeneratorInterface'), + $this->getMock('Drupal\Core\Theme\ThemeManagerInterface') + ) + ); $nodes = $twig->parse($twig->tokenize($template));